首页 新闻 搜索 专区 学院

关于C#中Monitor使用上的一个问题,希望高手可以解答一下

0
悬赏园豆:50 [待解决问题]

我在多线程时使用 Monitor.Enter来阻塞线程,但是因一些意外原因线程就一直在工作区中一直运行可能是无限的在重复运行某个方法(这个情况很少也不报错,很难找到代码上的原因),一直运行不到我finally中的Monitor.Exit释放线程。。而后面的线程主一直进不了工作区。整个程序就不工作了形成死锁。。而使用Monitor.TryEnter会抛出一些异常"从不同步的代码块中调用了对象同步方法",就算不抛出异常但之前在工作区阻塞的线程还是永远在里面。请问有没有什么方法解决

另外我循环终止线程有时不能立即停止或者_threads[i].Abort();会抛出异常导致后面的线程没有法停止请问这个又应该怎么做,我想在停止前先把线程挂起是不是可行。

恨天氏的主页 恨天氏 | 初学一级 | 园豆:16
提问于:2012-08-11 05:44
< >
分享
所有回答(2)
0

没有代码很难判断你的问题出在哪里啊

I,Robot | 园豆:9563 (大侠五级) | 2012-08-11 08:38
0

Monitor.TryEnter 这个你锁对象是什么?  值类型, 引用类型,类对象本身?还是自己定义的static object ?等等

chenping2008 | 园豆:9836 (大侠五级) | 2012-08-12 17:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册