当ThreadPool.QueueUserWorkItem返回false时

时间:2008-09-29 21:01:48

标签: .net multithreading concurrency threadpool

MSDN声明该方法返回

  

如果方法成功,则为true   排队; NotSupportedException是   如果工作项没有排队,则抛出。

出于测试目的,如何让方法返回false?或者它只是一个“次优”的类设计?

4 个答案:

答案 0 :(得分:5)

在查看Reflector中的源代码时,似乎代码中唯一可以返回“false”的部分是对以下内容的调用:

[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool AdjustThreadsInPool(uint QueueLength);

答案 1 :(得分:1)

这可能是“保留供将来使用”的情况。您可能希望将其视为失败,但很难进行测试。

我几乎将此方法视为void / Sub。

答案 2 :(得分:1)

可以想象,当任务并行库(TPL)到达时,整个API(线程池)就会过时。

答案 3 :(得分:1)

  

如果方法成功排队,则为true;如果工作项未排队,则抛出NotSupportedException。

以与处理return false相同的方式对待NotSupportedException

要使其返回false,请使用模拟方法或对象 您希望测试自己编写的代码,而不是底层的Windows代码。我确信微软已经为此做了很多自己的测试。