Как дождаться логического цикла без цикла (с использованием любого вида wait/semaphore/event/mutex и т.д.)

Мне нужно остановить поток, пока другой поток не установит логическое значение , и я не хочу делиться между ними событием.

В настоящее время у меня есть следующий код с использованием Sleep (и код, который я хочу изменить):

while (!_engine.IsReadyToStop())
{
    System.Threading.Thread.Sleep(Properties.Settings.Default.IntervalForCheckingEngine); 
}

Любые идеи?

ИЗМЕНИТЬ, ЧТОБЫ ЗАЩИТИТЬ ВЕЩИ:

Существует объект, называемый _engine класса, который у меня нет. Я не могу изменить его, поэтому я не хочу делиться событиями между ними. Мне нужно подождать, пока метод этого класса не вернет true.

Ответы

Ответ 2

Если вы используете C# 4.0, вы можете использовать:

Task t = Task.Factory.StartNew (() => SomeCall(..));
t.Wait();

Используя метод Task.Wait.

Если вы запускаете несколько задач один за другим, вы можете использовать Task.ContinueWith:

 Task t = Task.Factory.StartNew (() =>SomeCall(..)).
                                ContinueWith(ExecuteAfterThisTaskFinishes(...);
 t.Wait();