Как сделать звонок на мой сервис WCF асинхронным? - PullRequest
25 голосов
/ 30 декабря 2008

У меня есть служба WCF, которую я вызываю из службы Windows.

Служба WCF запускает пакет служб SSIS, и этот пакет может занять некоторое время, и я не хочу, чтобы моей службе Windows приходилось ждать, пока она завершит работу.

Как я могу сделать мой вызов службы WCF асинхронным? (или это по умолчанию асинхронный?)

Ответы [ 4 ]

27 голосов
/ 30 декабря 2008
13 голосов
/ 29 апреля 2011

В Visual Studio 2010 установлен флажок Add Service Reference > click Advanced button > check the Generate Asynchronous Operations.

После этого операции Async будут добавлены и станут доступны для вашего использования.

7 голосов
/ 12 мая 2016

Сервисная сторона:

[ServiceContract]
public interface IMyService
{
    [OperationContract]
    bool DoWork(int i);
}

Клиентская сторона:

[ServiceContract(Name = nameof(IMyService))]
public interface IMyServiceClient : IMyService
{
    [OperationContract]
    Task<bool> DoWorkAsync(int i);
}
2 голосов
/ 03 февраля 2009

прокси WCF внутри вашего клиента (Windows Service?) Необходимо указать при создании, что вы хотите, чтобы асинхронные операции были доступны.

Вы можете изменить существующий прокси-сервер WCF, щелкнув по нему правой кнопкой мыши и выбрав «Настроить ссылку на службу». Здесь вам просто нужно установить флажок «Генерация асинхронных операций»

Хорошо, это прокси-сторона WCF. Теперь вам нужно использовать APM (модель асинхронного программирования) с прокси внутри вашего клиента.

...