繁体   English   中英

ThreadPool.QueueUserWorkItem用例

[英]ThreadPool.QueueUserWorkItem use case

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

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

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

错误CS1593:委托System.Threading.WaitCallback' does not take 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(_ =>
{
    //...
});

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM