我面临的情况如下。因为 ThreadPool 每个进程有 1 个实例,所以我的问题是方法 1 会在 3 秒后取消按方法 2 排队的任务?
http请求进来
*method 1 gets executed first*:
ThreadPool.QueueUserWorkItem x 3
WaitHandle.WaitAll for 3 seconds
*method 2 gets executed after method 1*:
ThreadPool.QueueUserWorkItem x 10
WaitHandle.WaitAll for 10 seconds
抱歉,我想我完全误解了 WaitHandle 的用法。看来,如果我这样做,一切都会按预期进行。很抱歉造成混乱。
var calls = new ManualResetEvent[5];
//ThreadPool.QueueUserWorkItem blah...
WaitHandle.WaitAll(calls, timeOut);
但我仍然在想,当方法 1 用长时间运行的任务淹没线程池而方法 2 仅等待 1 秒时会发生什么。方法 2 是否会因为等待的时间不够长而返回结果。
Thanks.
不,它不会取消任务。只是您宁愿停止等待。顺便说一句,当 WaitAll 超过超时时,难道不应该抛出超时异常吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)