C# 事件未触发
有人能解释一下这个代码的错误吗?当我打电话给mco时,此事件不会触发C# 事件未触发,c#,C#,有人能解释一下这个代码的错误吗?当我打电话给mco时,此事件不会触发 private ModiconComunications.ModiconComObject withEventsField_mco = new ModiconComunications.ModiconComObject(); private ModiconComunications.ModiconComObject mco { get { return withEventsField_m
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);
好的,您以Events Field_mco开头,这一行创建的事件:
private ModiconComunications.ModiconComObject withEventsField_mco = new ModiconComunications.ModiconComObject();
没有连接到事件处理程序。除非您在构造函数中执行此操作。那么,您可以使用EventsField\u mco初始化,这是由此行创建的:
private ModiconComunications.ModiconComObject withEventsField_mco = new ModiconComunications.ModiconComObject();
没有连接到事件处理程序。除非您在构造函数中执行此操作。多编写一点代码会很有帮助 您可以使用事件初始化,并使用新对象创建字段。 但是,由于不在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{...}
}
}
多一点代码会很有帮助 您可以使用事件初始化,并使用新对象创建字段。 但是,由于不在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{...}
}
}
我没有看到任何事件触发代码。您是否能够确认该对象确实在调用该事件?我没有看到任何事件触发代码。您是否能够确认该对象确实在调用该事件?set语句在mco事件中不是这样做的吗?@MarkoLombardi:除非您确实执行
mco=在某个地方有事件字段(mco
)。通过直接设置with eventsfield\u mco
绕过setter,从而绕过setter中连接事件的代码。这不是set语句在mco事件中所做的吗?@MarkoLombardi:除非您确实在某个地方执行mco=with eventsfield\u mco
。通过直接使用EventsField_mco设置,绕过setter,从而绕过连接事件的setter中的代码。