J'ai la situation suivante: Mon service WCF permet à un client de s'enregistrer pour attendre un événement. L'attente est asynchrone du côté service, c'est-à-dire que le serveur est enregistré et lorsque le processus est terminé, le serveur est averti. En ce moment, c'est simplement un ManualResetEvent
.Async End <Method> non appelé dans WCF
Maintenant, je veux exposer cette méthode via WCF. J'ai essayé d'utiliser AsyncPattern=true
et créé deux méthodes, BeginWait
qui regroupe l'événement dans un IAsyncResult
, et EndWait
qui appelle AsyncWaitHandle.WaitOne()
. Toutefois, si j'appelle BeginWait
, EndWait
à partir du client, le côté serveur EndWait
n'est pas exécuté. J'utilise un wrapper implémenté manuellement (ma classe proxy est dérivée de ChannelBase<IWaitService>, IWaitService
), qui appelle essentiellement Channel.EndWait()
, et cette fonction est en effet appelée; mais côté serveur, l'appel n'arrive jamais.
Qu'est-ce que je fais mal ici? Question de suivi: Si l'appel asynchrone fonctionne, y a-t-il un moyen facile de le rendre synchrone du côté client?
Vous pouvez vérifier sur http: //blogs.msdn.com/mjm/archive/2005/05/04/414793.aspx surtout pour savoir que sync-versus-async est une chose 'locale' (vous pouvez appeler une méthode sync ou async du client, et qui pourrait être mis en œuvre sync ou async sur le serveur, les deux n'ont rien à voir avec un autre). – Brian
Fondamentalement, ce billet de blog l'a résolu - pourriez-vous faire une réponse à partir de votre commentaire, donc je peux l'accepter? – Anteru