ThreadPool.QueueUserWorkItem使用情况
问题描述:
我试图使用方法是这样的:ThreadPool.QueueUserWorkItem使用情况
public void Method()
{
ThreadPool.QueueUserWorkItem(() =>
{
while(!paused)
{
ThreadPool.QueueUserWorkItem(() => {...);
}
});
}
}
这个问题是因为它引发了我的第一次调用编译错误。
错误CS1593:委派0' 参数
的如何做到这一点不带参数的任何想法? ,任何替代?
答
您可以只提供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(_ =>
{
//...
});
ThreadPool.QueueUserWorkItem((state)=> {...); 回调需要对象参数。尽管你不必使用它。 – 2012-03-26 06:30:42