繁体   English   中英

ThreadPool.QueueUserWorkItem中的AgrumenNullException

[英]AgrumenNullException in ThreadPool.QueueUserWorkItem

我有一种方法经常被不同的踏板调用。 有时,当ThreadPool.QueueUserWorkItem(display(angebot), null);时,我会收到一个AgrumenNullException ThreadPool.QueueUserWorkItem(display(angebot), null); 被调用,说明参数callBack (第一个参数)为null。

我究竟做错了什么?


public class ai : UserControl
{
    //...
    public void Display(Angebote angebot)
    {
        lock (_syncObj) { _current = angebot; }
        ThreadPool.QueueUserWorkItem(display(angebot), null);
    }
    private WaitCallback display(Angebote angebot)
    {
        // doing something
    }
    //...
}

ThreadPool.QueueUserWorkItem将执行display(Angebote) WaitCallback返回的WaitCallback委托中定义的工作。 我想您的display方法有时会返回null。

您是否打算在后台线程中执行display(angebot) ,还是该方法可以识别应执行哪种方法?

如果您认为您的显示方法应该在后台线程中执行:

private WaitCallback display(Angebote angebot)
{
    // doing something in a background thread
}

然后您的代码应如下所示:

ThreadPool.QueueUserWorkItem(display, angebot);

private void display(object state)
{
    Angebot angebot = (Angebot)state;
    // doing something in a background thread
}

编辑:如果是后者正在display要执行哪个后台线程的display ,则也许您有类似以下内容:

private WaitCallback display(Angebote angebot)
{
    if (angebot.Something)
    {
         return new WaitCallback(BackgroundTask1);
    }
    else
    {
        return null;
    }
}

但是由于您尚未发布该代码,所以我不确定。 在这种情况下,对于ThreadPool.QueueUserWorkItem返回null无效。

暂无
暂无

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

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