ThreadPool.QueueUserWorkItem用例

A.Q*_*oga 5 c#

我试图以这种方式使用该方法:

public void Method()
{
        ThreadPool.QueueUserWorkItem(() =>
        {
            while(!paused)
            {
                ThreadPool.QueueUserWorkItem(() => {...);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

问题来了,因为它在第一次调用时抛出了编译错误.

错误CS1593:委托System.Threading.WaitCallback' does not take 0'参数

知道怎么做没有参数吗?,任何替代?

Jon*_*eet 12

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

ThreadPool.QueueUserWorkItem(ignored =>
{
    while(!paused)
    {
        ThreadPool.QueueUserWorkItem(alsoIgnored => {...});
    }
});
Run Code Online (Sandbox Code Playgroud)

或者使用匿名方法:

ThreadPool.QueueUserWorkItem(delegate
{
    while(!paused)
    {
        ThreadPool.QueueUserWorkItem(delegate {...});
    }
});
Run Code Online (Sandbox Code Playgroud)

如果您不关心匿名方法的参数,则不必说明它们.