首页 新闻 会员 周边

如何在线程池中实现限时执行功能

0
悬赏园豆:20 [已解决问题] 解决于 2008-08-14 09:12
<P>我想实现这样一个功能,一个方法放在线程池中执行,由于某些原因可能导致其很久还是没有完成,但是这样的话会长久占着线程池,导致后面的任务没法进行,或是耗尽了线程池的资源,因此我想设定一个限时执行的功能,比如超过5分钟,就中止它,哪位可以提供一下思路啊,我看了一下smartthreadpool好像没有这个功能,高手请指点啊</P>
lexus的主页 lexus | 初学一级 | 园豆:0
提问于:2008-08-07 09:25
< >
分享
最佳答案
0
System.Threading命名空间中的Monitor类有一TryEnter方法可以完成该功能,具体声明如下: Monitor.TryEnter (Object, Int32) 在指定的毫秒数内尝试获取指定对象上的排他锁。 Monitor.TryEnter (Object, TimeSpan) 在指定的时间量内尝试获取指定对象上的排他锁。 注意,该方法需要配合try语句执行。
greater | 菜鸟二级 |园豆:250 | 2008-08-07 19:40
其他回答(2)
0
长久耗时的任务不应该放入线程池来执行。 线程池中的线程应当执行密集型计算且耗时短的任务。 像楼主的情况应该使用单独的线程来完成任务,如果要多次重复执行该任务,可以实现自己的专用线程池。
Angel Lucifer | 园豆:775 (小虾三级) | 2008-08-07 15:48
0
TryEnter完,别忘了在finally里面,执行Monitor.Exit ...
咸蛋超人 | 园豆:485 (菜鸟二级) | 2008-08-10 16:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册