具有lambda表达式的QueueUserWorkItem参数?

时间:2014-09-12 05:06:53

标签: c# lambda queueuserworkitem

在下面的代码中,参数's'代表什么?我们不能只省略's',因为它没有在方法中使用,所以我们有一个没有参数的匿名方法,如()=> ...?

ThreadPool.QueueUserWorkItem((s)=> 
{
 Console.WriteLine("Working on a thread from threadpool");
});

更新1:

根据接受的答案,匿名方法只是正常WaitCallback委托方法的替代,如下面的ocd中那样,QueueUserWorkItem需要它作为参数。因此,'s'应该是对象类型,因为它是ThreadProc方法的参数。

void ThreadProc(Object stateInfo) {
   // No state object was passed to QueueUserWorkItem, so  
   // stateInfo is null.
    Console.WriteLine("Working on a thread from threadpool");
 }

1 个答案:

答案 0 :(得分:3)

匿名委托的C#2.0语法允许省略参数列表,在这种情况下,它将匹配任何一组(非ref非 - out)参数并忽略它们。

ThreadPool.QueueUserWorkItem(delegate {
   Console.WriteLine("Working on a thread from threadpool");
});

请注意,delegate {}delegate () {}

不同

另一方面,如果没有提供参数列表,则lambda语法不起作用。