我看到的 90% 的例子,包括 MSDN 使用这个语法:

ThreadPool.QueueUserWorkItem(new WaitCallback(MyCallback));

其他 10% 使用:
ThreadPool.QueueUserWorkItem(MyCallback);

在这两种情况下,MyCallback 都是静态函数。

编译器没有给出错误,代码似乎以任何一种方式工作。不创建新的 WaitCallback 对象而直接传递函数是否有危险?

我问是因为我试图在我的代码中找到一些错误,一旦我缩小范围,我将用更具体的问题解决这些问题,但也是这个一般问题,因为我一直很好奇并且找不到任何答案。我找到的最接近的是这个:

http://msdn.microsoft.com/en-us/library/4yd16hza%28v=vs.90%29.aspx

其中指出:



...但实际上并没有说“C# 用户必须使用构造函数”,我也想知道 为什么 /details。我正在使用 .NET 3.5。

最佳答案

ThreadPool.QueueUserWorkItem(new WaitCallback(MyCallback));
ThreadPool.QueueUserWorkItem(MyCallback);
是等效的,并被编译为相同的字节码。编译器会为您插入 new WaitCallback 调用。
来自 MSDN :

关于c# - ThreadPool.QueueUserWorkItem -- 是否需要 new WaitCallback()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15695889/

10-11 21:36