繁体   English   中英

活动未触发

[英]Event not firing

有人可以解释这段代码有什么问题吗? 当我致电mco时,不会触发此事件。

    private ModiconComunications.ModiconComObject withEventsField_mco = new ModiconComunications.ModiconComObject();
    private ModiconComunications.ModiconComObject mco
    {
        get { return withEventsField_mco; }
        set
        {
            if (withEventsField_mco != null)
            {
                withEventsField_mco.GetDataReturn -= mco_GetDataReturn;
            }
            withEventsField_mco = value;
            if (withEventsField_mco != null)
            {
                withEventsField_mco.GetDataReturn += mco_GetDataReturn;
            }
        }
    }

当我调用下面的行时,它应该触发事件mco_GetDataReturn,但是不会。 我做错了什么?

    mco.GetData(ModiconComunications.ModiconComObject.GetDataType.READ_MODICON_HREGS, 11421, 9, 0);

好吧,首先使用EventsField_mco(由该行创建的那个):

private ModiconComunications.ModiconComObject withEventsField_mco = new ModiconComunications.ModiconComObject();

没有得到它的事件处理程序挂钩。 除非您在构造函数中执行此操作。

多一点的代码会有所帮助。

您使用一个新对象初始化了EventsField_mco。 但是,由于您没有在mco属性上使用设置器,因此不会关联任何事件。

试试这个测试这个原因:

McocontainingObject.mco = new ModiconComunications.ModiconComObject();
mco.GetData(ModiconComunications.ModiconComObject.GetDataType.READ_MODICON_HREGS, 11421, 9, 0);

或在您的构造函数中

class McoContainer{
   private ModiconComunications.ModiconComObject withEventsField_mco;

   public McoContainer(){
      this.mco = new ModiconComunications.ModiconComObject();
   }

   public ModiconComunications.ModiconComObject mco{
      get{...}
      set{...}
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM