このコードのみを含む新しいスレッドを作成しています:
void myThread()
{
new Form1().Show();
}
質問のために一般的なものにしておきます。
このスレッドが終了しないようにするにはどうすればよいですか? スレッドが終了したため、フォームは閉じます。フォームを開いたままにして、イベント (ボタンのクリックなど) をトリガーできるように、スレッドを続行するにはどうすればよいですか?
助けてくれてありがとう:)
このコードのみを含む新しいスレッドを作成しています:
void myThread()
{
new Form1().Show();
}
質問のために一般的なものにしておきます。
このスレッドが終了しないようにするにはどうすればよいですか? スレッドが終了したため、フォームは閉じます。フォームを開いたままにして、イベント (ボタンのクリックなど) をトリガーできるように、スレッドを続行するにはどうすればよいですか?
助けてくれてありがとう:)
マルチスレッドを使用して追加のフォームを表示する場合は、Application.Run(Form)
代わりに を呼び出す必要があります。
編集:明確にするために、Application.Run
メソッドはフォームが閉じられる前に終了しません。すべてのイベントなどが機能します。
フォームをモーダルに表示するのはどうですか?フォームを表示するために新しいスレッドを作成する必要があるのはなぜですか?
void myThread()
{
new Form1().ShowDialog();
...
明確にするために-フォームが閉じられるまで、これにより新しいスレッドが効果的にロックされると思います。
スレッドに無限ループを入れるだけで簡単です。
void myThread()
{
new Form1().Show();
while(true)
{
Thread.Sleep(16);
}
}
スレッドをスリープ状態にしているのはなぜですか? ...内部に何もない無限ループを実行すると、非常に高速な反復を考慮すると、かなり CPU を集中的に使用するためです。16 ミリ秒のスリープで 60 fps が得られます。これは、必要な応答性を得るには十分すぎる値です。とにかく、なぜ別のスレッドでフォームを表示する必要があるのですか?