私は単純なSignalRサーバを持っていますが、これはほとんど経験がありません。SignalRハブ変数が値を失うのを止めることができません(静的変数は問題ではありません)
マイハブクラスがある:ここでは
public class MyHub : Hub
{
public List<Player> players { get; set; }
public MyHub()
{
players = new List<Player>();
}
public void Searching(Player player)
{
players.Add(player);
//Clients.All.a
}
}
は、私は、検索メソッドを呼び出すとMyHubクラスで私のコード内の変数
public String UserName { get; set; }
public IHubProxy HubProxy { get; set; }
const string ServerURI = "http://localhost:5051/signalr";
public HubConnection Connection { get; set; }
public Player User { get; set; }
public MainWindow()
{
InitializeComponent();
User = new Player(100);
ConnectAsync();
}
private void btnSearch_Click(object sender, RoutedEventArgs e)
{
HubProxy.Invoke("Searching", User);
}
ところ、私は(のために選手のリストをご希望であります今では)誰かがクライアントのbtnSearchをクリックするたびに追跡しています。これを行うことで、MyHubのプレーヤーリストにPlayerクラスのメンバーを追加するだけです。
何らかの理由で、私がこれを呼び出すたびに、デバッガを使用して、リストが再びヌルであることがわかり、コンストラクタが再度呼び出され、プレイヤリストが再び空になることがわかります。
他のスタックオーバーフローの問題で静的変数であることがわかりましたが、私のものは静的なものはありません。 (Playerクラスの何も静的ではありません)
が追加できます私が必要とするものを許可する、ハブなしでSignalRを使用するチュートリアルを指し示すリンク? – DaMuffiner
クイック&ダーティな修正は、プレイヤーリストを別のシングルトンに入れたり、プレイリストをいくつかのDIフレームワーク – gd73