Я обнаружил тупик, вызванный блокировкой экземпляра manualResetEvent. Я не могу понять, как это решить. Буду признателен за любую помощь.
У меня есть 2 метода в классе, выполняемые разными потоками:
private ManualResetEvent _event = new ManualResetEvent (true);
private void process(){
...
lock(_event){
_event.WaitOne();
...
}
}
internal void Stop(){
_event.Reset();
lock(_event){
...
}
}
Первый поток установил блокировку и заблокирован в _event.WaitOne ();
Поток socond выполнил строку _event .Сброс(); и блокируется при попытке выполнить блокировку (_event).
Я думал, что когда поток 1 заблокирован на WaitOne, блокировку следует снять. Думаю, я ошибаюсь. Не знаю, как это исправить. кстати - я добавил блокировку, поскольку код в блоке блокировки должен быть синхронизирован в обоих потоках.
Еще раз спасибо и извините за длинный пост.