有人可以解释这段代码有什么问题吗?当我打电话给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);
答案 0 :(得分:3)
好吧,你首先使用了由这一行创建的事件文件_mco_mco:
private ModiconComunications.ModiconComObject withEventsField_mco = new ModiconComunications.ModiconComObject();
不会让它的事件处理程序联系起来。除非你在构造函数中这样做。
答案 1 :(得分:1)
多一点代码会有所帮助。
使用新对象初始化withEventsField_mco。 但是,由于您未在mco属性上使用setter,因此无法连接任何事件。
尝试这个来测试这个推理:
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{...}
}
}