私は非同期ソケット入力のステータスを報告するために使用されているので、スレッドセーフである必要があるToastを作成しています。私はそれをスレッドセーフにしようとしましたが、トーストはまだロックされています。スレッドセーフなForm.Show
public static void Show(string message) {
Toast toast = new Toast(message);
toast.ShowAction();
}
private delegate void InvokeCallback();
public void ShowAction() {
if (InvokeRequired) {
Invoke(new InvokeCallback(ShowAction));
}
else {
Show();
}
}
私は、メッセージボックスのように簡単に、すなわちToast.Show("Status changed");
をそれらを表示できるようにしたいです。どんな助けでも大歓迎です。
フォームを作成するのと同じスレッドで、フォームの周りにメッセージループを実行できます。単に行う:Application.Run(フォーム);フォームは現在制御されているので、必要に応じてフォームを閉じる必要があります。 –
@ lassevk:NO NO NO!起動していないスレッドでは、メッセージループを開始しないでください。これは悲惨な結果をもたらす可能性があります! –