次の利用可能なoppertunityで作業を停止するために、いわゆるワーカースレッドに通知する必要があります。現在、私はこのような何か使用しています:スレッドに停止通知するオプション
public void Run()
{
while (!StopRequested)
DoWork();
}
を私が持っている懸念はStopRequestedが別のスレッドでTrueに設定されていることです。これは安全ですか?私はブール値をロックできないことを知っています。おそらく、スレッドに停止が必要であることを通知する別の方法があります。たとえば、私はThread.CurrentThread.ThreadState == ThreadState.StopRequested
をチェックすることができますが、スレッド状態をどのように設定できるかは不明です。
ブール値をロックできないのはなぜですか?何らかのロックのために別々の 'Object'を作成することは、一般的には良い方法です。 –
私はboolをロックすることはできません。その値の型は - 私はboolフラグを取得/設定するときにロックする以外の目的ではないいわゆる同期オブジェクトを作成することができます。 boolに安全でなければならない。少なくともReed Copseyは同意する。 –
ええ、ブールの周りのロックは安全でなければならない。協調取消。バックグラウンドワーカーは、実行しているタスクに適切であれば、同様の概念をサポートします。 –