在方法method()中触发自定义事件E,方法method在子线程t中执行。在主线程中注册事件E后,调试时发现接收不到事件E。在触发E的if语句中断,发现E是null的,为什么呢?我明明已经注册了这个E啊?!望高手指教,谢谢!

解决方案 »

  1.   

    不能这么玩,要调用主线程的Invoke来处理。
      

  2.   

     public partial class DaysChange : UserControl{
    // 事件
    public event EventHandler<EventArgs> DaysChanged;// 调用事件执行方法
    public void OnInvoke()
    {
    if(DaysChanged !=null )
    {
    this.Invoke(DaysChanged );
    }
    }
    }
    public partial class NormalCheckin: UserControl{
    public NormalCheckin()
    {
    DaysChange daysChange = new DaysChange();
                          daysChange.DaysChanged += new EventHandler<EventArgs>(this.OnDaysChanged);
    }
      /// <summary>
            /// 修改入住天数事件执行方法
            /// </summary>
            private void OnDaysChanged(object sender, EventArgs e)
            {
                int days = Convert.ToInt32(sender);
                        }
       }
      

  3.   

    谢谢四楼的,类DaysChange如果不是继承自控件或窗体,怎么使用Invoke呢?