0
winformアプリケーションを使用して新しいスレッドを作成しようとしました。ここに私のサンプルコードです。winformがCで閉じられたときに、デリゲートで新しいスレッドを終了します。
public static bool stop = false;
private Thread mythread(){
Thread t = new Thread(delegate() {
while(!stop){
// Something I want to process
}
});
return t;
}
private Button1_click(object sender, EventArgs e){
stop = true; // I know it doesn't work
this.Dispose();
this.Close();
}
public Main(){
InitializeComponent();
Thread thread = mythread();
thread.Start();
}
ボタン1をクリックすると、新しいスレッドとwinformは終了する必要がありますが、新しいスレッドはまだ動作しています。新しいスレッドを終了する方法はありますか?
ps:私のコードrefferingをMSDN site exampleに変更しようとしましたが、それはもっと複雑になりました。
一連のwhileループで長いプロセスがある場合は、それを終了するには時間がかかりますことをお勧めします。いくつかのコマンドをすべて停止するかどうかをチェックする方が良いです。あなたはいつもこの目標を達成するためにタスクを使うことができます。タスクはより良いキャンセルメカニズムを持っています。 –
これは、スレッドが決して*停止しないゼロ以外のオッズを正しく実行しているわけではありません。ちょうどこれを正しい方法でやってください。 –