0

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

我究竟做错了什么?


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
    }
    //...
}
4

1 回答 1

1

将按照返回的委托ThreadPool.QueueUserWorkItem中定义的方式完成工作。我推测您的方法有时会返回 null。WaitCallbackdisplay(Angebote)display

您的意图是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;
    }
}

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

于 2012-06-24T14:34:12.600 回答