2016-07-27 4 views
0

Ich lerne SignalIR, und habe ein Problem gefunden. Wenn Sie einen Blick auf diese Seite haben, gibt es ein Beispiel:SignalIR Hubs in asp.net Haltevariablen

https://www.simple-talk.com/dotnet/asp.net/tracking-online-users-with-signalr/

im Beispiel können Sie der Autor siehe die folgenden Methoden verwendet Online-Nutzer zu verfolgen:

private static int _userCount = 0; 

// Overridable hub methods 
public override Task OnConnected() 
{ 
    _userCount ++; 
} 
public override Task OnReconnected() 
{ 
    _userCount ++; 
} 
public override Task OnDisconnected(bool stopCalled) 
{ 
    _userCount --; 
} 

Mein Problem mit Dieser Code ist jedes Mal, wenn eine Methode in dieser Klasse aufgerufen wird. Alle Variablen werden zurückgesetzt. Bei jedem Aufruf von OnConnected() beginnt _userCount mit 0 und wird beim nächsten Verbindungsaufbau mit _userCount wieder auf 0 gesetzt wird wieder auf 1 erhöht.

Ich habe eine andere Methode zu überprüfen, wie viele Benutzer verbunden sind:

public int countUsers() 
    { 
     return _userCount; 
    } 

Dies liefert immer 0

Muss ich die Variablen speichern woanders server?

+1

Verwenden Sie einen Singleton. – mxmissile

Antwort

0

fand ich, dass trotz der am Beispiel:

private static int _userCount = 0; 

I

private int _userCount = 0; 

die Variable statisch das Problem gelöst zu machen benutzt hatte. Danke an mxmissile dafür, dass er mich in die richtige Richtung weist.

Verwandte Themen