首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ThreadPool.QueueUserWorkItem用例

ThreadPool.QueueUserWorkItem用例
EN

Stack Overflow用户
提问于 2012-03-26 06:28:38
回答 3查看 2.2K关注 0票数 5

我试着用这种方法:

代码语言:javascript
复制
public void Method()
{
        ThreadPool.QueueUserWorkItem(() =>
        {
            while(!paused)
            {
                ThreadPool.QueueUserWorkItem(() => {...);
            }
        });
    }
}

这个问题的出现是因为它在第一个调用中抛出了一个编译错误。

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

知道如何在没有争论的情况下做这件事吗?还有其他选择吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-26 06:30:59

您只需为lambda表达式提供一个参数,并忽略它:

代码语言:javascript
复制
ThreadPool.QueueUserWorkItem(ignored =>
{
    while(!paused)
    {
        ThreadPool.QueueUserWorkItem(alsoIgnored => {...});
    }
});

或者使用匿名方法代替:

代码语言:javascript
复制
ThreadPool.QueueUserWorkItem(delegate
{
    while(!paused)
    {
        ThreadPool.QueueUserWorkItem(delegate {...});
    }
});

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

票数 12
EN

Stack Overflow用户

发布于 2012-03-26 06:32:19

ThreadPool.QueueUserWorkItem需要一个System.Threading.WaitCallback委托作为其参数。此委托只有一个参数,而lambda表达式没有。如果要忽略可以使用的参数,请使用:

代码语言:javascript
复制
ThreadPool.QueueUserWorkItem(_ =>
{
    //...
});
票数 2
EN

Stack Overflow用户

发布于 2012-03-26 06:31:56

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9867566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档