私は無限ループを通過してデータを処理するフォームを持っています。フォームを「閉じる」ボタンをクリックすると、フォームを閉じても処理が続行されます。フォームを完全に終了してループステートメントから抜け出し、新しいフォームを開きます。
これがフォームを閉じるために使用しているコードです
frmMain.Close()
frmMain.Dispose()
注:スレッドは使用していません。これは単純な VB.NET アプリケーションです。メインのスタートアップフォームを閉じません。
これを行う「正しい」方法は、実際にはバックグラウンドワーカースレッドを使用することです。ただし、これはバックグラウンドワーカースレッドがなくても機能します。
フォームクラスで変数を宣言します。
Private keepLoopAlive As Boolean
次に、処理ループを次のように記述します。
keepLoopAlive = True
Do While keepLoopAlive
(your code that loops here)
DoEvents
Loop
次に、閉じるイベントで次の操作を行います。
keepLoopAlive = False
Me.Close()
これにより、ループが最初のチャンスで終了し、フォームが閉じます。
このコードはIDEではなく、メモリから作成したため、タイプミスがある可能性があります。
私は 。NET 開発者ではないので、これは有効ではない可能性がありますが、無限ループを実行している場合は、ループを開始するたびに、何らかのブール値でループが有効であることを確認します、失敗した場合はループから抜けます。
フォームを閉じるときに、ブール値falseを設定するとドロップされ、ループを待機して再起動する外部ループを作成するか、関数全体をもう一度再起動することができます。