2016-07-01 6 views
3

ich eine WPF-Chat-Anwendung, die Entwicklung in zwei Projekten Client

  1. WPF Server
  2. WPF sind zwar eine login request machen, ich Benutzer wollen nur, wenn Server verbunden werden bereits begonnen und falls nicht, sollte sich der Benutzer nicht anmelden können.

    Ich verwende SignalR in dieser Anwendung. Wie kann ich überprüfen, ob der Server bereits vor der Anmeldung gestartet wurde, und den Benutzer dann eine Verbindung zu ihm herstellen lassen?

    Es kann in JavaScript mit

    $.connection.hub.start().done(function() 
    { 
    
    }); 
    

    Wie kann ich erreichen dies in WPF-Anwendung erreichbar sein?

Antwort

-1

Sie können es durch Ausnahmen wie dem folgenden Code behandeln:

try 
{ 
    var hubConnection = new HubConnection(url,...); 
    ... ; /*defining proxies and handlers*/ 
    hubConnection.Start().Wait(); 
} 
catch(Exception ex) 
{ 
    /*handle exception code */ 
} 

Alternativ: beachten Sie, dass die hubconnection.Start() gibt ein Task so, wenn Sie einen Code ausführen möchten, und überprüfen, ob es erfolgreich ausgeführt ist oder es eine ist Ausnahme, können Sie ContinueWith Methode verwenden:

var hubConnection = new HubConnection(url,...); 
... ; /*defining proxies and handlers*/ 
hubConnection.Start().ContinueWith(t=> { 
              /* code to run if connection has been made successfully */ 
             },TaskContinuationOptions.OnlyOnRanToCompletion); 

So können wir sagen, dass dies ContinueWith mit dem TaskContinuationOptions.OnlyOnRanToCompletion ist das Äquivalent von $ .connection.hub.s scharf()

+0

@ akazemis danke für die schnelle Antwort, aber das ist nicht das, wonach ich frage. Eigentlich werden diese Methoden aufgerufen, wenn der Client sich mit dem Server verbindet und was ich wissen möchte ist, wie ich feststellen kann, bevor der Benutzer sich verbindet, wenn der Server nicht gestartet wird. – NewbieCoder

+0

Wenn Sie diesen Code in einen try/catch setzen, können Sie eine Ausnahme im Falle eines Verbindungsfehlers abfangen, haben Sie es versucht? : 'try {var hubConnection = new HubConnection (url, ...); ...; hubConnection.Start(). Wait();} catch (Exception ex) {/ * handle Ausnahmecode * /} ' – akazemis