c# Invoke 在多线程中使用控件   报出“未将对象初始化”bug
下列代码
delegate void BindDataDelegate(string tagId, int devId);
BindDataDelegate d = new BindDataDelegate(BindData);
d.Invoke(tagId,devId);public void BindData(string tagid, int devid)
        {            ConfigurationInfo coninfo = cons.GetConfigurationInfo();            DateTime time = DateTime.Now;            bsinfo = bsinfobll.GetProductInfo(tagid);            if (lblPname.InvokeRequired)
            {
                lblPname.Text = bsinfo.Pname;             }
}就在在lblPname.Text = bsinfo.Pname;   这一行报错   

解决方案 »

  1.   

    delegate void BindDataDelegate(string tagId, int devId);
    BindDataDelegate(BindData);
    d.Invoke(tagId,devId);public void BindData(string tagid, int devid)BindDataDelegate d = new 
       {
       if (lblPname.InvokeRequired)
       {
    BindDataDelegate d = new BindDataDelegate(BindData);
    d.Invoke(new object[]{tagid,devId});
       }
       else
    {
       ConfigurationInfo coninfo = cons.GetConfigurationInfo();   DateTime time = DateTime.Now;   bsinfo = bsinfobll.GetProductInfo(tagid);
       lblPname.Text = bsinfo.Pname;
    }}
      

  2.   

    应该是你的bsinfo等于null,判断一下, 
      

  3.   

    支持楼上。bsinfo = bsinfobll.GetProductInfo(tagid);这一句是生成bsinfo的实例,当右边的方法没有取到值时,bsinfo对象就是null,即未实例化,所以在使用该对象时报“未将对象初始化”。