なぜこのようなことが起こっているのかわかりませんが、EventHandler内に新しいフォームを作成すると、メソッドが終了するとすぐに消えます。C#EventHandlerで作成されたWindowsフォームがすぐに消えます
ここに私のコードです。わかりやすく編集しましたが、論理的にはまったく同じです。
static void Main()
{
myEventHandler = new EventHandler(launchForm);
// Code that creates a thread which calls
// someThreadedFunction() when finished.
}
private void someThreadedFunction()
{
//Do stuff
//Launch eventhandler
EventHandler handler = myEventHandler;
if (handler != null)
{
handler(null, null);
myEventHandler = null;
}
}
private void launchForm(object sender, EventArgs e)
{
mf = new myForm();
mf.Show();
MessageBox.Show("Do you see the form?");
}
private myForm mf;
private EventHandler myEventHandler;
メッセージボックスが表示される限り、新しいフォームが表示されますか?ある。 OKをクリックすると、フォームが消えます。
私には何が欠けていますか?私は、クラス変数に新しいフォームを割り当てることによって、メソッドが終了した後も生き続けると思っていました。どうやら、これは当てはまりません。
説明:someThreadedFuncは、メインUIスレッド以外のスレッドで呼び出されます(launchFormも同様です)。 –
正しい。ごめんなさい。私は3ページのコードを貼り付けることなく明確になるように最善を尽くしました。 –