1

「標準」の CSLA 非同期サーバー呼び出しは、通常、次のように構成されています。

基本クラス:

public static void GetMyObject(EventHandler<DataPortalResult<MyObject>> callback) {
  var dp = new DataPortal<MyObject>();
  dp.FetchCompleted += callback;
  dp.BeginFetch();
}

ビューモデル:

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;
  });
}

新しい async/await 機能を使用すると、形式は次のようになります。

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 テクノロジでまだ有用ですか? 新しいプロジェクトを行うとき、できることならそれらのメソッドをそこに入れたくありません。

4

1 に答える 1

2

個人的には、すべてのコードでコールバックよりも TAP メソッドを好みます。

ではMicrosoft.Bcl.Async、ほとんどのプラットフォームが をサポートしasyncます。Taskただし、 Windows Phone 7.0、.NET CF、SL 3 など、TAP も使用できない状況もいくつかあります。これらのプラットフォームのいずれかをサポートする必要がある場合にのみ、コールバックを使用します。

于 2013-07-05T02:47:00.620 に答える