Pergunta

Eu tenho um serviço WCF que eu chamo de um serviço do Windows.

O serviço WCF executa um pacote SSIS, e que pacote pode demorar um pouco para completa e eu não quero que o meu serviço de janelas de ter que esperar por ele ao fim.

Como posso fazer o meu WCF serviço de chamada assíncrona? (Ou é assíncrono por padrão?)

Foi útil?

Solução

Outras dicas

No Visual Studio 2010, na caixa de seleção Add Service Reference > click Advanced button > check the Generate Asynchronous Operations.

Depois de fazer isso, será adicionado as operações assíncronas e estar disponível para seu uso.

lado Serviço:

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

lado do cliente:

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

o interior WCF Proxy do seu cliente (serviço do Windows?) Precisa ser especificado na criação que você deseja ter Operações assíncronas disponíveis.

Você pode modificar um proxy WCF existente com o botão direito sobre ele e escolha 'Configurar Serviço de Referência' A partir daí você só precisa verificar a caixa de seleção ao lado de 'Gerar operações assíncronas'

Ok, então esse é o lado WCF Proxy de coisas cuidado. Agora você precisa usar APM (Programação Asynchronous Model) com o interior Proxy de seu cliente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top