[英]ThreadPool.QueueUserWorkItem NullReferenceException
[英]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.