首页 新闻 会员 周边

多线程中怎么释放Monitor

0
悬赏园豆:10 [已关闭问题] 关闭于 2012-07-27 17:18

比如我在多线程任务区中使用了Monitor.Enter(monitorObject);

 

for (int i = 0; i < _threads.Length; i++)            

{                 _threads[i].Abort();             }

我在中止多线程时怎么去释放Monitor,方便我下次启动任务。因为在Monitor没有释放之前,我就结束了线程。下次启动任务时将会一直在Monitor.Enter(monitorObject)这里卡着。

而我并不希望使用Monitor.TryEnter。请问各位高手怎么在结束线程时释放Monitor。

风灵波的主页 风灵波 | 初学一级 | 园豆:4
提问于:2012-07-27 00:29
< >
分享
所有回答(3)
0

用monitor.exit 释放.  其实你应该直接用lock(monitorObject) 

gunsmoke | 园豆:3592 (老鸟四级) | 2012-07-27 08:40
0

你可以参考这个文章

http://kb.cnblogs.com/page/42530/

johden2 | 园豆:352 (菜鸟二级) | 2012-07-27 09:47
0

自己解决了,,,我当然知道monitor.exit释放。。。

 Monitor.Enter(monitorObject);
                    try
                    {

工作区

}

finally
                    {
                        Monitor.Exit(monitorObject);
                    }

终止线程都会抛出正在终止线程的异常,所以我们在finally里释放就可以了

 

风灵波 | 园豆:4 (初学一级) | 2012-07-27 17:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册