Silverlight | Auf asynchrone Methode warten



  • Hallo,

    ich habe einen WCF - Service von dem ich aus Silverlight aus zugreife. D.h. alle Aufrufe finden asynchron statt.

    Ich muss jedoch an einer bestimmten Stelle auf die Ausführung der Methode warten. Hat jemand eine Idee wie man das tun kann?

    Mit einem AutoResetEvent hängt sich der Browser auf, weil WaitOne() und die AsyncMethode() im selben Thread ausgeführt werden.

    Ist es vielleicht möglich die asynchrone Methode mit dem EventHandler zu synchronisieren?

    Ich hab den Client mal folgendermaßen erweitert:

    public static IObservable<int> WaitTime(this ServiceClient client, int time)
            {
                var obsWaitTime = Observable.FromEvent<WaitTimeCompletedEventArgs>
                (
                    h => client.WaitTimeCompleted += h,
                    h => client.WaitTimeCompleted -= h
                )
                .Take(1)
                .ObserveOnDispatcher();
    
                client.WaitTimeAsync(time);
    
                return obsWaitTime.Select
                (
                    x => x.EventArgs.Result
                );
            }
    

    Aufrufen tue ich das ganze dann so:

    ServiceClient client = new ServiceClient();
    
                client.WaitTime(5000).Subscribe
                (
                    returnValue =>
                    {
                        MessageBox.Show(returnValue.ToString() + " seconds elapsed");
                    }
                );
    
    MessageBox.Show("proceed");
    

    Ich möchte, dass "proceed" erst nach "5000 seconds elapsed" erscheint. Mir fehlt nur die Möglichkeit wie


Anmelden zum Antworten