ThreadPool.QueueUserWorkItem使用情况

ThreadPool.QueueUserWorkItem使用情况

问题描述:

我试图使用方法是这样的:ThreadPool.QueueUserWorkItem使用情况

public void Method() 
{ 
     ThreadPool.QueueUserWorkItem(() => 
     { 
      while(!paused) 
      { 
       ThreadPool.QueueUserWorkItem(() => {...); 
      } 
     }); 
    } 
} 

这个问题是因为它引发了我的第一次调用编译错误。

错误CS1593:委派​​0' 参数

的如何做到这一点不带参数的任何想法? ,任何替代?

+0

ThreadPool.QueueUserWorkItem((state)=> {...); 回调需要对象参数。尽管你不必使用它。 – 2012-03-26 06:30:42

您可以只提供lambda表达式的参数,而忽略它:

ThreadPool.QueueUserWorkItem(ignored => 
{ 
    while(!paused) 
    { 
     ThreadPool.QueueUserWorkItem(alsoIgnored => {...}); 
    } 
}); 

或者使用,而不是一个匿名方法:

ThreadPool.QueueUserWorkItem(delegate 
{ 
    while(!paused) 
    { 
     ThreadPool.QueueUserWorkItem(delegate {...}); 
    } 
}); 

如果你不关心匿名参数方法,你不必陈述它们。

您传递的委托需要带一个参数。如果你想忽略它,你可以用任何变量名称替换括号。

ThreadPool.QueueUserWorkItem要求System.Threading.WaitCallback委托人作为其参数。这个委托有一个参数,而你的lambda表达式没有。如果你想忽略你可以使用的参数:

ThreadPool.QueueUserWorkItem(_ => 
{ 
    //... 
});