2015-08-03 3 views
2

Я использую язык C#. Простой сервис WCF, который имеет метод «MethodA», отнимает много времени. Поэтому для производительности приложения я создал прокси-сервер и выберет опцию «Генерировать асинхронные операции». Теперь на стороне клиента я получил еще несколько методов «BeginMethodA», «EndMethodA». Теперь я назвал «BegineMethodA» и передал соответствующий параметр. На стороне клиента у меня есть метод обратного вызова, который фактически возвращает мне результат для «MethodA». Я даже не называю «EndMethodA». Что такое значительное использование для «EndMethodA», мне нужно вызвать этот метод для завершения операции?Операция asynchronus в WCF

ответ

1

Да, вам необходимо позвонить по телефону EndMethodA. Вы делаете это в обратном вызове async, чтобы получить фактические результаты (если у него есть возвращаемое значение).

Обратите внимание, что есть два способа сделать это проще.

  1. Просто используйте Task. Вы действительно можете ожидать через канал WCF.
  2. Если у вас уже есть методы Begin/End, используйте Task.Factory.FromAsync и await, что.

Оба метода намного более чисты с точки зрения клиента и позволяют игнорировать уродство/замешательство в старом шаблоне Begin/End.

+0

Спасибо @BradleyDotNET, перед тем как отмечать как ответ, я хотел бы задать еще один вопрос. Когда мы используем фабрику задач и запускаем задачу. Когда результат будет готов, мне нужно избавиться от этой задачи? или фабрика задач позаботятся об этом. – Prashant

+0

@Prashant Я не считаю, что вам нужно уничтожить объект Task, просто 'await'. – BradleyDotNET

Смежные вопросы