Подтвердить что ты не робот

Как сделать вызов моей службы WCF асинхронным?

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

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

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

4b9b3361

Ответ 2

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

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

Ответ 3

Сфера обслуживания:

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

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

[ServiceContract(Name = nameof(IMyService))]
public interface IMyServiceClient : IMyService
{
    [OperationContract]
    Task<bool> DoWorkAsync(int i);
}

Ответ 4

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

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

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

Ответ 5

Я искал простой ответ на этот вопрос в течение нескольких дней, и я просто нашел то, что сработало для меня.

На всякий случай, если это кому-то нужно, и он хочет провести более глубокое изучение после того, как обратитесь к:

Простой пример асинхронной задачи для службы WCF в С#