public static void Main()
{
Form formOnThisMessageLoop = new Form();
formOnThisMessageLoop.Show();
Form formOnOtherMessageLoop = new Form();
Task.Factory.StartNew(
() =>
{
Application.Run(formOnOtherMessageLoop);
}
);
//Thread.Sleep(50);
formOnOtherMessageLoop.HandleCreated += (obj, args) =>
formOnOtherMessageLoop.Invoke(new Action(() => { formOnOtherMessageLoop.Close(); })); //Value Close() cannot be called while doing CreateHandle().
Application.Run();
Console.Read();
}
2 番目のメッセージ ループでフォームを閉じるさまざまな方法を試しています。このような場合、スレッドを正しく同期するにはどうすればよいですか? また、2回呼び出す必要がありますApplication.Exit()
か、それとも Form.Close() が最善ですか? Application.Run() がデッド スレッドを維持していることがわかります。それが私の懸念です。メインスレッドが長く存続できると仮定します。