日期:2014-05-17  浏览次数:20989 次

c# winform中的委托问题
委托的问题
我写了3个页面 其中主form窗体中用
 doTask = new DOThread();
            doTask.Log += tManage_Log;
            AKC = new AKCMS();
            AKC.Log += tManage_Log;
方法是下面
 private void tManage_Log(object sender, cGatherTaskLogArgs e)
        {
            string pageName = "page" +e.TaskNode + ":" + e.TaskName;
            SetValue(this.tabControl1.TabPages[pageName].Controls[0], "Text", e.strLog);
                
           
        }
在doThread中加了这段 /// <summary>
        /// 采集日志事件
        /// </summary>
        public event EventHandler<cGatherTaskLogArgs> e_Log;
        internal event EventHandler<cGatherTaskLogArgs> Log
        {
            add {  e_Log += value;  }
            remove {  e_Log -= value;  }
        }
用e_Log(this, new cGatherTaskLogArgs(TaskNode, TaskName, ((int)cTool.LogType.Error).ToString() + "请检查网站信息是否配置出错"));  没什么问题

在AKCM中同样加      /// <summary>
        /// 采集日志事件
        /// </summary>
        private event EventHandler<cGatherTaskLogArgs> e_Log;
        internal event EventHandler<cGatherTaskLogArgs> Log
        {
            add { e_Log += value; }
            remove { e_Log -= value; }
        }
用e_Log(this, new cGatherTaskLogArgs(TaskNode, TaskName, ((int)cTool.LogType.Error).ToString() + "请检查网站信息是否配置出错"));  为什么会报错 说是为将对象引用到对象实例
winform 对象 委托 c#

------解决方案--------------------
跟踪一下,TaskNode, TaskName可能为null
  
************************************