当ThreadPool.QueueUserWorkItem返回false时
-
02-07-2019 - |
题
MSDN声明该方法返回
如果方法成功,则为true 排队; NotSupportedException是 如果工作项没有排队,则抛出。
出于测试目的,如何让方法返回 false
?或者它只是一个“次优”的。班级设计?
解决方案
在查看Reflector中的源代码时,似乎代码中唯一可以返回“false”的部分。是对以下内容的呼吁:
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool AdjustThreadsInPool(uint QueueLength);
其他提示
这可能是“保留供将来使用”的情况。您可能希望将其视为失败,但很难进行测试。
我几乎将此方法视为void / Sub。
可以想象,当任务并行库(TPL)到达时,整个API(线程池)就会过时。
如果方法成功排队,则为true;如果工作项未排队,则抛出NotSupportedException。
以与处理 NotSupportedException
相同的方式处理 return false
。
要使其返回false,请使用模拟方法或对象。
您希望测试自己编写的代码,而不是底层的Windows代码。我确信微软已经为此做了很多自己的测试。
不隶属于 StackOverflow