标准的CSLA异步服务器调用通常是根据以下内容构建的:
基类:
public static void GetMyObject(EventHandler<DataPortalResult<MyObject>> callback) {
var dp = new DataPortal<MyObject>();
dp.FetchCompleted += callback;
dp.BeginFetch();
}ViewModel:
protected override void OnInitialize(object parameter) {
base.OnInitialize(parameter);
base.IsBusy = true;
MyObject.GetMyObject((o, e) => {
if (HasNoException(e)) {
Model = e.Object;
}
base.IsBusy = false;
});
}使用新的异步/等待功能,格式将如下所示:
public async static Task<MyObject> GetMyObject() {
return await DataPortal.FetchAsync<MyObject>();
}和
protected async override void OnInitialize(object parameter) {
base.OnInitialize(parameter);
base.IsBusy = true;
Model = await MyObject.GetMyObjectAsync();
base.IsBusy = false;
}在这一点上,回调模式应该被认为是过时的,还是对某些UI技术仍然有用?当做一个新项目时,如果我能帮上忙,我宁可不要这些方法。
发布于 2013-07-05 10:47:01
就我个人而言,在我的所有代码中,我更喜欢TAP方法而不是回调。
有了Microsoft.Bcl.Async,大多数平台都支持async。然而,在少数情况下,TAP或Task都不可用,例如Windows phone7.0、.NET CF、SL3。如果我必须支持这些平台之一,我才会使用回调。
https://stackoverflow.com/questions/17454446
复制相似问题