I encounter a deadlock caused when locking instance of manualResetEvent. I can't figure out how to solve it. I will appreciate any help.
I have 2 methods in a class performed by different threads:
private ManualResetEvent _event = new ManualResetEvent (true);
private void process(){
...
lock(_event){
_event.WaitOne();
...
}
}
internal void Stop(){
_event.Reset();
lock(_event){
...
}
}
The first thread acuired the lock and is blocked in _event.WaitOne();
The socond thread performed the line _event.Reset(); and is blocked when trying to perform lock(_event).
I thought that when thread 1 is blocked on WaitOne, the lock should be released. I guess I'm wrong. I don't know how can I fix it. b.t.w - I added the lock since the code in the lock block should be synchronized in both threads.
Thanks again and sorry for the long post.