2010-01-05 3 views

Répondre

1

Jetez un oeil à l'échantillon de AsyncPages. Si vous voulez qu'il soit synchrone, bloquez-le jusqu'à la fin du rappel.

Espérons que cela aide!

1

Il y a aussi la possibilité d'exposer un point final NServiceBus en tant que service de service Web et WCF, et ceux-ci peuvent être appelées de façon synchrone que vous attendez.

1

Le client n'est pas une page ASPX donc je ne peux pas l'utiliser comme l'échantillon async. J'utilise les services RIA, je suis donc en aucun contrôle du synhronization du service WCF lui-même. Je l'ai résolu en utilisant Wait and Pulse:

[WebMethod] 
    public string HelloWorld(int number) 
    { 
     string returnVal = "" ; 
     var command = new Command { Id = number }; 
     lock(this) 
     {     
      Global.Bus.Send(command).Register<ErrorCodes>(code => 
       { 
        lock(this) 
        { 
         returnVal = returnVal = Enum.GetName(typeof(ErrorCodes), code); 
         Monitor.Pulse(this); 
        } 
       } 
      ); 

      Monitor.Wait(this);     
     } 
     return returnVal; 
    } 
Questions connexes