委托事件问题

问题描述

publiceventclsOPC.DataChangeEventHandlerDataChange{[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);}}protectedvirtualvoidDataChangeEvent(intwTransID,intiItemCount,int[]iClientHds,object[]vValues,FILETIME[]ftTimeStamps,short[]wQualities,int[]pErrors){MyOPCDATAChangeList[]oPCDataChangeList=this.GetOPCDataChangeList();this.DataChange(this,newOPCDataChangeEventArgs(oPCDataChangeList));}

解决方案

解决方案二:
你的add是从哪里学的呢?贴出来你这样写的理由。
解决方案三:
编译错误中,提示的很清楚了。为保证安全使用event,不能这样编程。
解决方案四:
事件触发调用只能在当前类操作,派生类也无法调用。建议你在基类里定义一个protected修饰的触发事件方法,让派生类调用
解决方案五:
还有,接口定义的事件不能显式实现,会无法触发调用。
解决方案六:
如果写add、remove方法,那种代码根本不是你这种编程逻辑。那种代码,通常是针对一个EventList集合来操作。你抄了一个四不像的方法接口,里边的两行代码都完全是自己想象出来的。你使用了根本不该访问的语句。
解决方案七:

解决方案八:
我不知道你的这些代码是从哪里学来的诡异代码,只能猜一下。学习c#编程的基础,不要用“反编译工具”来学。那些工具往往打印出来诡异的代码,并不是正规代码。
解决方案九:
学习了。[MethodImpl(MethodImplOptions.Synchronized)]这种东西,貌似是什么框架里面的吧?
解决方案十:
不知道在纠结什么,编译器不让你这么用,那就换个写法呗要不你就到微软去当C#项目主管,让你的手下按你的写法改改编译器
解决方案十一:
引用1楼sp1234的回复:

你的add是从哪里学的呢?贴出来你这样写的理由。

这是反编译出来的、就这三行报错了,不知道该如何修改了

时间: 2024-09-23 16:06:16

委托事件问题的相关文章

委托/事件/线程传参简单理解

写了很多代码,但几乎都没写过委托/事件/线程传参方面应用的代码 因此自己总很容易理解后又遗忘 今天又重温了一下 因此以最简单的方式的代码方式写下来帮助理解 1.线程传参[简单几行代码]    1 static void Main(string[] args) 2         { 3             if (ThreadPool.QueueUserWorkItem(new WaitCallback(Program.WritePara), "这是传进去的参数")) 4     

委托事件 问题 求求各位大神了

问题描述 委托事件 问题 求求各位大神了 public event clsOPC.DataChangeEventHandler DataChange { [MethodImpl(MethodImplOptions.Synchronized)] add { this.DataChange += (clsOPC.DataChangeEventHandler)Delegate.Combine(this.DataChange, value); } [MethodImpl(MethodImplOption

如何将多线程中接收数据处理的方法通过委托事件共用户使用呀!

问题描述 如何将多线程中接收数据处理的方法通过委托事件共用户使用呀!具体描述:一个TcpServer类主要是任务有启动服务.停止服务.接收连接的Socket(每接收一个Socket的建立一个线程对该Socket进行管理.线程调用的是Socket中的一个方法)Socket类:接收数据.发送数据等.注:将接收到的数据通过事件的方式委托到外面进行操作.如何做呀!还是这样的设计细路就有问题呀!!该如何设计呢!!! 解决方案 解决方案二:参考:http://blog.csdn.net/zhiang75/a

VC.Net 中 Remoting 技术中,delegate event 客户端定义委托事件的问题

问题描述 我使用C#Remoting技术实现一个传输信息的DLL,里面定义了一个委托事件,主要实现服务器向客户端发送一些信息publicclassRemoting_Object:MarshalByRefObject{publicdelegatevoidChatRoomEventHandler(strings);//定义了1个"ChatRoomEventHandler委托类型"的事件及远程回调函数publiceventChatRoomEventHandlerMessageReceive;

C# 中如何利用lambda实现委托事件的挂接

在写一个小程序的时候,碰到了这样的问题,需要用委托来挂接事件,但是又想在这事件中使用局部的变量,而委托一旦定义好后,挂接方就没有办法再添加额外的形参了.那有没有什么办法,可以实现呢   委托定义如下: 复制代码 代码如下: public class SocketSp {  public delegate void ReceiveCompleted(byte[] receiveBuffer, int receiveTotalLen,Exception ex);  public ReceiveCom

C# 委托 事件 匿名方法

(*) 委托 delegate 从最简单的例子开始: namespace ConsoleApplication1 { class Program { // 委托其实就相当于一个类型.这里,类型的名字叫BinaryOp public delegate int BinaryOp(int x, int y); static public int Add(int x, int y) { return x + y; } static void Main() { // 创建一个BinaryOp类型的实例,用

C#基础知识回顾--委托事件

在上一篇看到他我一下子就悟了(续)---委托,被人狂喷.说写的太空,没有什么内容之类的.所以准备在这里重写下,不过还是按着以前的方式尽量简单的写.这里我们以打篮球为例. 第一步:首先,其他对象订购事件        当发球的球员产生它的发球事件之前,其他球员需要订购这个事件,采用这种方式,只要出现一个发球事件,其他球 员就能够知道.   第二步:触发事件        当球被发出时,此时发球员对象产生一个新事件.   第三步:球产生一个事件          创建一个新事件,这个事件还有一些参数

关于委托事件

问题描述 下面c#的代码,请高手改成vb的publicdelegateboolDoMouseMove(intX,intY);privateeventDoMouseMoveMouseMove;这是我改的代码,不过提示如下:错误25事件不能用具有返回类型的委托类型声明.PublicDelegateFunctionDoMouseMove(ByValXAsInteger,ByValYAsInteger)AsBooleanPrivateEventMouseMoveAsDoMouseMove 解决方案 解决

好像是关于委托事件

问题描述 现在的问题是ocx是用c++写的,我需要用c#做一个winform,实现ocx有个函数c++里是LONGRegCallback(ULONGEvent,IDispatch*dispCall,ULONGMsgMask); 这个函数在vs的c#环境下显示是intRegCallback(uintEvent,objectdispCall,uintMsgMask) 我要是实现的就是用这个函数对ocx注册一个监听,dispcall这个应该是事件触发后回调的函数帮我解决一下我这个应该怎么写关于c#里的