Castle WCF Facility Async Callからの応答を取得します
-
10-10-2019 - |
質問
私がそうするような電話があるとします:
_actService.BeginWcfCall(x => x.SaveAct(new SaveActRequest
{
Act = act
}));
救いの反応に到達するにはどうすればよいですか?操作が完了したときに発射するためにコールバックを設定するにはどうすればよいですか?
私が試してみました:
_actService.BeginWcfCall(x => x.GetAct(new GetActRequest
{
ActName =
saveScheduleSlotRequest.ScheduleSlot.ActProxy.Name
}), (result) =>
{
var async = (GetActResponse)result.AsyncState;
}, _actService);
しかし、それはあいまいな呼びかけについて不平を言っていますか?
ポインターはありますか?
解決
クレイグ・ノイワートはこれに答えました: http://groups.google.com/group/castle-project-users/browse_thread/thread/f440dbd05e60484f
通常のC#非同期パターンについて少し混乱していると思います。常に一対のbegin/end呼び出しが含まれます。
WCF施設は、beginwcfcallの最後の2つの引数によって決定される2つのコールバックモデルをサポートしています
2つのオプションは1)アクション>、状態2)asynccallback、状態です
オプション1は標準の非同期パターンであり、このようになります
_actService.BeginWcfCall(x => x.GetAct(new GetActRequest
{
ActName =
saveScheduleSlotRequest.ScheduleSlot.ActProxy.Name
}), (IAsyncResult result) =>
{
var response = _actService.EndWcfCall<GetActResponse>(result);
// Do something with the response
});
ご覧のとおり、最初は_ACTServiceプロキシへの参照が必要です。 1つ目は、そうではない便利な方法です。
_actService.BeginWcfCall(x => x.GetAct(new GetActRequest
{
ActName =
saveScheduleSlotRequest.ScheduleSlot.ActProxy.Name
}), (IWcfAsyncCall<GetActResponse> result) =>
{
var response = result.End();
// Do something with the response
});
どのアプローチの選択は、C#標準の非同期パターンの好みに完全に依存します。
所属していません StackOverflow