c# - ThreadPool.QueueUserWorkItem 用例

标签 c#

我正在尝试以这种方式使用该方法:

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

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

error CS1593: Delegate System.Threading.WaitCallback' does not take 0' arguments

知道如何在没有参数的情况下做到这一点吗? , 还有其他选择吗?

最佳答案

您可以只为 lambda 表达式提供一个参数,然后忽略它:

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

或者改用匿名方法:

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

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

关于c# - ThreadPool.QueueUserWorkItem 用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9867566/

相关文章:

c# - 如何从 WPF 应用程序检索内存中的变量?

javascript - 如何以正确的格式从js获取日期?月和日颠倒

c# - 如何在接口(interface)上创建一般约束属性?

c# - 交替背景颜色网格行不起作用

C# Faker Bogus 生成自有属性(property)

c# - 反之foreach

c# - 如何在 Orchard 的迁移中创建一个 GUID 列?

c# - WCF 的凭证委托(delegate)问题

c# - 在 C# 中使标签的文本透明

c# - 对大量(50~)属性建模的策略