2008-12-30 7 views
25

J'ai un service WCF que j'appelle depuis un service Windows.Comment faire un appel à mon service WCF asynchrone?

Le service WCF exécute un package SSIS, et ce package peut prendre un certain temps à se terminer et je ne veux pas que mon service Windows doit attendre qu'il se termine.

Comment rendre mon appel de service WCF asynchrone? (Ou est-ce asynchrone par défaut?)

Répondre

2

Proxy WCF intérieur votre client (service Windows?) doit être spécifié lors de la création que vous souhaitez avoir des opérations asynchrones disponibles.

Vous pouvez modifier un proxy WCF existant en cliquant droit et en choisissant « Configurer le service de référence » De là, il vous suffit de cocher la case à cocher en regard de

« Générer des opérations asynchrones » Ok, donc c'est la WCF Le côté proxy des choses prises en charge. Vous devez maintenant utiliser APM (Asynchronous Programming Model) avec le proxy à l'intérieur de votre client.

12

Dans Visual Studio 2010, sur la case Add Service Reference > click Advanced button > check the Generate Asynchronous Operations. Après cela, les opérations asynchrones seront ajoutées et seront disponibles pour votre utilisation.

+0

Super, m'a beaucoup aidé ... Merci mon pote! –

3

côté service:

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

côté client:

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

Beaucoup de réponses à cette question sont d'avant 2012. C'est la manière moderne de le faire. – Greg

Questions connexes