我在多线程时使用 Monitor.Enter来阻塞线程,但是因一些意外原因线程就一直在工作区中一直运行可能是无限的在重复运行某个方法(这个情况很少也不报错,很难找到代码上的原因),一直运行不到我finally中的Monitor.Exit释放线程。。而后面的线程主一直进不了工作区。整个程序就不工作了形成死锁。。而使用Monitor.TryEnter会抛出一些异常"从不同步的代码块中调用了对象同步方法",就算不抛出异常但之前在工作区阻塞的线程还是永远在里面。请问有没有什么方法解决
另外我循环终止线程有时不能立即停止或者_threads[i].Abort();会抛出异常导致后面的线程没有法停止请问这个又应该怎么做,我想在停止前先把线程挂起是不是可行。
没有代码很难判断你的问题出在哪里啊
Monitor.TryEnter 这个你锁对象是什么? 值类型, 引用类型,类对象本身?还是自己定义的static object ?等等