AgrumenNullException in ThreadPool.QueueUserWorkItem



我有一个方法,它经常被不同的胎面调用。有时,当调用ThreadPool.QueueUserWorkItem(display(angebot), null);时,我会收到一个 AgrumenNullException,说明参数 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委托中定义的工作。 我推测您的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正在弄清楚要执行的后台线程,那么也许你有如下所示的东西:

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

但是由于您尚未发布该代码,因此我不确定。 在这种情况下,返回nullThreadPool.QueueUserWorkItem 无效。

相关内容

  • 没有找到相关文章

最新更新