2

DoWorkイベント内で処理作業を行った後、バックグラウンドワーカーを破棄する必要がありますか、それとも管理対象オブジェクトであるため、最終的には自動的に破棄されますか?

以前は、timer_elapsed30秒ごとにタスクを実行するためにie内でいくつかの機能を実行していました。今、私はBackGroundWorkerのDoWorkイベント内で同じ処理を行っています。このbgWorkerイベントをループして30秒ごとに実行するにはどうすればよいですか(たとえば)bgworker.RunWorkerAsync();

このbgWorker.RunWorkerAsync()インディーを置いた場合timer_elapsed、タイマーが経過するたびにどのように処分しますか?

4

1 に答える 1

3

バックグラウンド ワーカーは後で処分する必要がありますか? ...

いいえ。BackgroundWorker は IDisposable インターフェイスを実装しますが、Component から継承されたブランケット機能としてのみ実装されます。それは何の役にも立ちません。

これ入れbgWorker.RunWorkerAsync()たらtimer_elapsed

あなたがそれをするべきかどうかは疑わしい。ただし、そうする場合は、毎回新しい Backgroundworker を作成するだけです。

Backgroundworker は比較的「軽い」オブジェクトであり、リソースを保持しません。スレッドは ThreadPool から借用されます。

プリンシパルにこだわる場合は、新しいプリンシパルを作成する前に、古いプリンシパルで Dispose() を呼び出すことができます。しかし、それは大した違いはありません。

于 2012-06-02T15:08:33.330 に答える