![](/img/trans.png)
[英]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.