日期:2014-05-18  浏览次数:20828 次

listbox删除对象,调用invoke出现异常NullReferenceException
在对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);
                        }
                }


------解决方案--------------------
线程同步问题
------解决方案--------------------
学习中~~
友情UP
------解决方案--------------------
Up