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