Получение ответа от Castle WCF Facility Async Call
-
10-10-2019 - |
Вопрос
Скажи, что мне так звонит:
_actService.BeginWcfCall(x => x.SaveAct(new SaveActRequest
{
Act = act
}));
Как мне получить ответ SaveAct? Как я могу настроить обратный вызов для стрельбы, когда операция завершится?
Я пытался:
_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#. Это всегда включает в себя пару начинающих/конечных вызовов.
Модели обратного вызова WCF Facilit
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, чтобы позвонить в конце. Первый - это удобный метод, который нет.
_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#.