我试着用这种方法:
public void Method()
{
ThreadPool.QueueUserWorkItem(() =>
{
while(!paused)
{
ThreadPool.QueueUserWorkItem(() => {...);
}
});
}
}这个问题的出现是因为它在第一个调用中抛出了一个编译错误。
错误CS1593:委托
System.Threading.WaitCallback' does not take0‘参数
知道如何在没有争论的情况下做这件事吗?还有其他选择吗?
发布于 2012-03-26 06:30:59
您只需为lambda表达式提供一个参数,并忽略它:
ThreadPool.QueueUserWorkItem(ignored =>
{
while(!paused)
{
ThreadPool.QueueUserWorkItem(alsoIgnored => {...});
}
});或者使用匿名方法代替:
ThreadPool.QueueUserWorkItem(delegate
{
while(!paused)
{
ThreadPool.QueueUserWorkItem(delegate {...});
}
});如果您不关心匿名方法的参数,则不必声明它们。
发布于 2012-03-26 06:32:19
ThreadPool.QueueUserWorkItem需要一个System.Threading.WaitCallback委托作为其参数。此委托只有一个参数,而lambda表达式没有。如果要忽略可以使用的参数,请使用:
ThreadPool.QueueUserWorkItem(_ =>
{
//...
});发布于 2012-03-26 06:31:56
您传递的委托需要使用一个参数。如果您想忽略它,可以将括号替换为任何变量名。
https://stackoverflow.com/questions/9867566
复制相似问题