ManualResetEvent は基本的に、他のスレッドに対して「続行するシグナルを受信した場合にのみ続行できます」と伝え、特定の条件が満たされるまで特定のスレッドの実行を一時停止するために使用されます。私が聞きたいのは、while ループを使用して簡単に目的を達成できるのに、なぜ ManualResetEvent が発生するのかということです。次のコンテキストを考慮してください。
public class BackgroundService {
ManualResetEvent mre;
public BackgroundService() {
mre = new ManualResetEvent(false);
}
public void Initialize() {
// Initialization
mre.Set();
}
public void Start() {
mre.WaitOne();
// The rest of execution
}
}
にいくらか似ている
public class BackgroundService {
bool hasInitialized;
public BackgroundService() {
}
public void Initialize() {
// Initialization
hasInitialized = true;
}
public void Start() {
while (!hasInitialized)
Thread.Sleep(100);
// The rest of execution
}
}
ManualResetEvent が while ループよりも適している特定のコンテキストはありますか?