bg = new BackgroundWorker();
bg.DoWork += new DoWorkEventHandler(bg_DoWork);
bg.RunWorkerAsync();
void bg_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
label1.Text = DateTime.Now.Minute.ToString() + " " + DateTime.Now.Second.ToString();
}
}
bg.DoWork -= new DoWorkEventHandler(bg_DoWork);
bg.Dispose();
これを呼び出した後、私はBackgroundWorker
がまだ動作していることがわかります。しかし、BackgroundWorker
の代わりにThread
を使用し、Abort()
と呼んでも機能しません。どうしてこんなことに?バックグラウンドワーカーの処理対スレッド.abort
あなたはそれが機能していないと言ったら、どういう意味ですか?タスクが完了する前にタスクを取り消そうとしていますか、タスクが完了したらバックグラウンドワーカー/スレッドを再利用しようとしていますか? – Sudsy1002
私はスレッドをうまく終了できますが、backgroundworkerのdisposeを呼び出した後でコードブロックが停止していない間はtrueを返します。 –
Disposeは、ネイティブコンポーネントをすべて解放します。 whileループはネイティブではないので、まだ実行中です – Steve