首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请大家帮小弟我看看小弟我委托的对象总是null 实在是找不到原因了

2013-02-25 
请大家帮我看看我委托的对象总是null 实在是找不到原因了实在是找不出问题来了写的这个功能是类内操作list

请大家帮我看看我委托的对象总是null 实在是找不到原因了
实在是找不出问题来了   
写的这个功能是类内操作listview 显示日志的 

相同的代码  我新建一个项目 随便写点操作 都没问题 可以正确运行 
但是代码到这个项目里就一直报错

“未将对象引用设置到对象的实例”
我debug进去 对象updatelistview就是null   
真心无力了  
请大家帮这看看


//操作类内
namespace SocketDebugTool
{
    public delegate void UpdateListview(string str); 

    class ClientTcp
    {
        public event UpdateListview updatelistview;

           ………………………………
        /// <summary>
        /// 开始
        /// </summary>
        public void start()
        {
            worker = new BackgroundWorker();

            // 设置可以取消
            worker.WorkerSupportsCancellation = true;
            // 设置可以通告进度
            //worker.WorkerReportsProgress = true;
            //处理过程
            worker.DoWork += new DoWorkEventHandler(doWork);
            //更新控件
            //worker.ProgressChanged += new ProgressChangedEventHandler(UpdateProgress);
            //当后台操作已完成、被取消或引发异常时发生
            worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(CompletedWork);
            //go
            worker.RunWorkerAsync();
        }
        private void doWork(object sender, DoWorkEventArgs e)
        {
            …………
            for (int i = count; i > 0 && run; --i)
            {
                ………………
                    if (……)
                    {
                        ……
                        //打日志
                        string str = System.Text.Encoding.Default.GetString(recvBuf);


                        loginfo.WriteLine("……:"+str);
                        //
                        updatelistview(str);//执行委托实例 
                    }
                    else
                    {
                        ……
                    }
                    ……
                }
                catch (Exception ee)
                {
                    ……
                }
                
            }
            ……

            //自动发送
            ……
        }
}




//窗体类

namespace SocketDebugTool
{
    public partial class ClientForm : Form
    {
        public ClientForm()
        {
            InitializeComponent();
        }

        #region //变量
        ClientTcp clienttcp = new ClientTcp();

        #region//更新listview控件
        public void updatalistview(string msg)
        {
            PacketView.Items.Add(msg);
        }
        #endregion


//开始
        private void btnSend_Click(object sender, EventArgs e)
        {
            ////////////
            clienttcp.updatelistview += new UpdateListview(updatalistview);
            ////////////////


           

            if (!clienttcp.Running)
            {
                //TCP
                if (rbTcp.Checked)
                {
                    //构造 —_—
                    clienttcp = new ClientTcp();
                    //go
                    clienttcp.start();

                    ………………
                  }
              }
         }


[解决办法]
你后面又给new了一个clienttcp,前面的赋值就没有了。
[解决办法]
哪里异常,也不说是哪一行。

热点排行