ビューの読み込み時にイベントハンドラーを持つ uivewcontroller があります。バックグラウンドで起動するコードと UI が含まれているため、UI コードでは InvokeOnMainThread を使用しています。別のコントローラーに移動して戻るまで、正常に動作します。イベントが発生しても、UI コードは実行されません。このコントローラーにプッシュするたびに、新しいインスタンスを作成しています。だから私はそれをこのコントローラーの1つのインスタンスだけにしようとしましたが、うまく動作します!!!! なぜこれが起こっているのか、誰かが私に説明できますか??!!
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
if (hubConnection == null) {
hubConnection = new HubConnection ("http://" + JsonRequest.IP + ":8070/", "userId=" + userId);
hubProxy = hubConnection.CreateHubProxy ("myChatHub");
hubConnection.EnsureReconnecting ();
//}
if (hubConnection.State == ConnectionState.Disconnected) {
hubConnection.Start ();
}
hubConnection.Received += HandleReceived;
}
}
void HandleReceived (string obj)
{
InvokeOnMainThread (delegate {
discussion.Root [0].Add (new ChatBubble (true, text));
});
}