私は次のような方法を持っています:
void Foo ()
{
bool flag;
do
{
flag = false;
var check = CheckSomething();
if(check)
{
DoSomething();
flag = true;
}
}
while(flag);
}
現在、次のコード スニペットを使用してメソッドを呼び出しています (多くのワーカー スレッドで実行されます)。
Bar(); // this method may affect the outcome of CheckSomething()
ThreadPool.QueueUserWorkItem(state => Foo());
- Bar() が呼び出された直後にループ本体が常に実行されることが重要ですが、
CheckSomething()
Foo()
費用がかかるので、必要以上に電話をかけたくない
Foo()
まだ実行されておらず、終了する前に呼び出す場合にのみ、安全に呼び出す方法はありCheckSomething()
ますか?