2008-12-30 15 views
25

Tengo un servicio WCF al que llamo desde un servicio de Windows.¿Cómo realizar una llamada asincrónica a mi servicio WCF?

El servicio WCF ejecuta un paquete SSIS, y ese paquete puede tardar un tiempo en completarse y no quiero que mi servicio de Windows tenga que esperar a que termine.

¿Cómo puedo hacer que mi llamada de servicio WCF sea asíncrona? (¿O es asíncrono por defecto?)

Respuesta

2

el proxy WCF dentro de su cliente (¿Servicio de Windows?) debe especificarse en la creación que desea que las operaciones asincrónicas estén disponibles.

Puede modificar un proxy WCF existente haciendo clic derecho sobre ella y seleccionando 'Configurar referencia de servicio' A partir de aquí sólo tiene que marcar la casilla de verificación junto a 'Generar operaciones asíncronas'

Ok por lo que es el WCF El lado del poder de las cosas cuidadas. Ahora necesita usar APM (Modelo de programación asincrónica) con el Proxy dentro de su cliente.

12

En Visual Studio 2010, en la casilla Add Service Reference > click Advanced button > check the Generate Asynchronous Operations.

Después de hacerlo, las operaciones de Async se agregarán y estarán disponibles para su uso.

+0

Genial, me ayudó mucho ... ¡Gracias amigo! –

3
lado

Servicio:

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

lado del cliente:

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

Muchas de las respuestas a esta pregunta son anteriores a 2012. Esta es la forma moderna de hacerlo. – Greg

Cuestiones relacionadas