在对listBoxWell(ListBox)的删除中,由于RemoveAwellInfo从另一个线程调用,采用了invoke方法(具体见listBoxWellsRemove).问题是在语句: listBoxWells.Invoke(d, obj); 时出现NullReferenceException异常,已经确定obj和d是非空的.而且异常出现的不规则,调用几次才出现一次,有时2,3次,有时4,5次.
另外listBoxWell中对象全部是WellInfo.void RemoveAwellInfo(WellInfo wellInfo)
{
listBoxWellsRemove(wellInfo);
}
delegate void listBoxWellsRemoveCallBack(Object obj); private void listBoxWellsRemove(Object obj)
{
if (listBoxWells.InvokeRequired)
{
listBoxWellsRemoveCallBack d = new listBoxWellsRemoveCallBack(listBoxWellsRemove);
listBoxWells.Invoke(d, obj); //出现System.NullReferenceException异常!!
}
else
{
listBoxWells.Items.Remove(obj);
}
}
另外listBoxWell中对象全部是WellInfo.void RemoveAwellInfo(WellInfo wellInfo)
{
listBoxWellsRemove(wellInfo);
}
delegate void listBoxWellsRemoveCallBack(Object obj); private void listBoxWellsRemove(Object obj)
{
if (listBoxWells.InvokeRequired)
{
listBoxWellsRemoveCallBack d = new listBoxWellsRemoveCallBack(listBoxWellsRemove);
listBoxWells.Invoke(d, obj); //出现System.NullReferenceException异常!!
}
else
{
listBoxWells.Items.Remove(obj);
}
}
解决方案 »
- xaml中怎么动态设定属性?
- P/Invoke, c++参数是char*, c#用string传入,debug时报错,直接运行却不报错???
- 关于字符串转化日期型与时间型的问题.
- 100分帮我搞定这个麻烦的socket编程!
- C#源代码管理器的系统DLL文件全变成惊叹号,怎么办
- 跪求点对点通信软件一个.有原代码的
- C#中的Static的值如果程序不改变它,是不是直到整个程序结束前一直保持这个值?
- 求教,,急急急。。。。
- 当dataGrid中没有对应数据显示时,如何向ListView一样显示带有Grid的空行?
- 页面见传递变量
- unicode與utf8的問題....對我來說太難了..快一個星期了.沒搞定,幫幫忙....
- 大家帮忙讨论下这套系统的可行性
如果在调用删除之前选中listBoxWells里面的一项,则异常必然会出现!
因为在listBoxWells_SelectedIndexChanged函数里有如下的语句:
private void listBoxWells_SelectedIndexChanged(object sender, EventArgs e)
{
WellInfo wellInfo = (WellInfo)listBoxWells.SelectedItem; //!!!
}
由于删除之后会触发此事件,所以会出现NullReferenceException.
改进方法很简单,如下:
private void listBoxWells_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBoxWells.SelectedItem == null)
return; WellInfo wellInfo = (WellInfo)listBoxWells.SelectedItem;
//...
}
但还是不知为什么会异常在Invoke这句话出现,望高手指点~