首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步CSLA呼叫

异步CSLA呼叫
EN

Stack Overflow用户
提问于 2013-07-04 01:24:54
回答 1查看 845关注 0票数 1

标准的CSLA异步服务器调用通常是根据以下内容构建的:

基类:

代码语言:javascript
复制
public static void GetMyObject(EventHandler<DataPortalResult<MyObject>> callback) {
  var dp = new DataPortal<MyObject>();
  dp.FetchCompleted += callback;
  dp.BeginFetch();
}

ViewModel:

代码语言:javascript
复制
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;
  });
}

使用新的异步/等待功能,格式将如下所示:

代码语言:javascript
复制
public async static Task<MyObject> GetMyObject() {
  return await DataPortal.FetchAsync<MyObject>();
}

代码语言:javascript
复制
protected async override void OnInitialize(object parameter) {
  base.OnInitialize(parameter);
  base.IsBusy = true;
  Model = await MyObject.GetMyObjectAsync();
  base.IsBusy = false;
}

在这一点上,回调模式应该被认为是过时的,还是对某些UI技术仍然有用?当做一个新项目时,如果我能帮上忙,我宁可不要这些方法。

EN

回答 1

Stack Overflow用户

发布于 2013-07-05 10:47:01

就我个人而言,在我的所有代码中,我更喜欢TAP方法而不是回调。

有了Microsoft.Bcl.Async,大多数平台都支持async。然而,在少数情况下,TAP或Task都不可用,例如Windows phone7.0、.NET CF、SL3。如果我必须支持这些平台之一,我才会使用回调。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17454446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档