Question

J'ai un service WCF que j'appelle depuis un service Windows.

Le service WCF exécute un package SSIS. Ce package peut prendre un certain temps et je ne veux pas que mon service Windows soit obligé d'attendre qu'il se termine.

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

Était-ce utile?

Autres conseils

Sous Visual Studio 2010, sous Ajouter une référence de service > cliquez sur le bouton Avancé > cochez la case Générer des opérations asynchrones .

Après cela, les opérations asynchrones seront ajoutées et disponibles pour votre usage.

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);
}

le proxy WCF à l'intérieur de votre client (service Windows?) doit être spécifié lors de la création pour laquelle vous souhaitez que les opérations asynchrones soient disponibles.

Vous pouvez modifier un proxy WCF existant en cliquant dessus avec le bouton droit de la souris et en choisissant "Configurer la référence de service". Il vous suffit ensuite de cocher la case en regard de "Générer des opérations asynchrones"

Ok, voilà donc le côté proxy de la WCF. Vous devez maintenant utiliser APM (modèle de programmation asynchrone) avec le proxy à l'intérieur de votre client.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top