0

有人可以解释这段代码有什么问题吗?当我打电话给 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);
4

2 回答 2

3

好吧,您首先使用EventsField_mco,它是由这一行创建的:

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

没有连接它的事件处理程序。除非你在构造函数中这样做。

于 2012-10-18T14:23:46.433 回答
1

多一点代码会有所帮助。

您使用新对象初始化 withEventsField_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{...}
   }
}
于 2012-10-18T14:27:12.887 回答