簡體   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