Нужен всеобъемлющий пример C # System.Threading.Tasks - PullRequest
5 голосов
/ 08 июля 2010

Я пытался выяснить, как использовать System.Threading.Tasks для асинхронного вызова синхронного метода WCF при поддержке отмены, обработки ошибок, возврата результата и нескольких продолжений.

Я пришелчерез ряд незавершенных демонстраций, но все они, похоже, не дотягивают.В качестве примера я не могу использовать совместную отмену, поскольку все мои методы WCF являются атомарными и относительно долгоживущими.

Ответы [ 2 ]

1 голос
/ 12 сентября 2011

Если бы вы объяснили, что делаете, это может помочь.

Однако вы, похоже, говорите, что хотите асинхронную версию синхронного вызова, а задача не в этом.

Обработка на основе задач заключается в том, чтобы асинхронный вызов выглядел как синхронный вызов. Не ведите себя так, просто код выглядит так, как он работает.

1 голос
/ 08 июля 2010

Я бы рассмотрел альтернативный вариант - создать клиентский интерфейс WCF с асинхронными методами. Это позволит вам выполнять все вызовы службы WCF асинхронно (с точки зрения клиентского приложения), что позволит вам поддерживать отмену, обработку ошибок, возврат результата и т. Д.

Преимущество заключается в том, что вы не будете блокировать поток в пуле рабочих потоков (как это сделает System.Threading.Tasks), и вам не нужно будет пытаться выяснить, как отменить синхронный вызов WCF. в вашей рабочей ветке.

Есть ли причина, по которой вы должны сделать синхронный вызов WCF?

...