委托事件问题

mnwlsq 2016-05-19 03:02:31
public event clsOPC.DataChangeEventHandler DataChange
{
[MethodImpl(MethodImplOptions.Synchronized)]
add
{
this.DataChange += (clsOPC.DataChangeEventHandler)Delegate.Combine(this.DataChange, value);

}
[MethodImpl(MethodImplOptions.Synchronized)]
remove
{

this.DataChange += (clsOPC.DataChangeEventHandler)Delegate.Remove(this.DataChange, value);
}
}
protected virtual void DataChangeEvent(int wTransID, int iItemCount, int[] iClientHds, object[] vValues, FILETIME[] ftTimeStamps, short[] wQualities, int[] pErrors)
{
MyOPCDATAChangeList[] oPCDataChangeList = this.GetOPCDataChangeList();
this.DataChange(this, new OPCDataChangeEventArgs(oPCDataChangeList));
}

...全文
175 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mnwlsq 2016-05-20
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
你的 add 是从哪里学的呢?贴出来你这样写的理由。
这是反编译 出来的、 就这 三行 报错了 ,不知道该如何修改了
xuzuning 2016-05-19
  • 打赏
  • 举报
回复
不知道在纠结什么,编译器不让你这么用,那就换个写法呗 要不你就到微软去当 C# 项目主管,让你的手下按你的写法改改编译器
sgyiliya 2016-05-19
  • 打赏
  • 举报
回复
学习了。 [MethodImpl(MethodImplOptions.Synchronized)] 这种东西,貌似是什么框架里面的吧?
wireboy 2016-05-19
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
我不知道你的这些代码是从哪里学来的诡异代码,只能猜一下。 学习c#编程的基础,不要用“反编译工具”来学。那些工具往往打印出来诡异的代码,并不是正规代码。
  • 打赏
  • 举报
回复
如果写 add、remove方法,那种代码根本不是你这种编程逻辑。那种代码,通常是针对一个 EventList 集合来操作。 你抄了一个四不像的方法接口,里边的两行代码都完全是自己想象出来的。你使用了根本不该访问的语句。
Lee_Y_K 2016-05-19
  • 打赏
  • 举报
回复
还有,接口定义的事件不能显式实现,会无法触发调用。
Lee_Y_K 2016-05-19
  • 打赏
  • 举报
回复
事件触发调用只能在当前类操作,派生类也无法调用。 建议你在基类里定义一个protected修饰的触发事件方法,让派生类调用
  • 打赏
  • 举报
回复
编译错误中,提示的很清楚了。为保证安全使用event,不能这样编程。
  • 打赏
  • 举报
回复
你的 add 是从哪里学的呢?贴出来你这样写的理由。

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧