读书人

C#DLL中回调函数实现,该怎么处理

发布时间: 2013-12-04 17:21:02 作者: rapoo

C#DLL中回调函数实现
请教各位:现在用C#封装了一个DLL,想在DLL运行的时候动态回传有关信息给调用的程序,比如打开了串口,下发了什么数据,接收了什么数据,都是在实时的回传,请问怎么实现,不是在C#里调用其他比如C写的DLL里有回调如何调用,而是C#自己的实现,谢谢了!
[解决办法]
http://www.cnblogs.com/cssmystyle/archive/2012/03/15/2397524.html
[解决办法]
不道,来听听。
INVOKE,也没有回调,委托好像也不行。
[解决办法]

引用:
不道,来听听。
INVOKE,也没有回调,委托好像也不行。

委托为何不行

[解决办法]
使用事件或者委托。

[解决办法]
听起来就是Event.

类似



public delegate void PortOpenedHander(object sender, EventArgs e);

类定义
{

public event PortOpenedHander PortOpened;

public void OpenPort()
{

//打开端口

//成功后
if (PortOpened != null)
PortOpened(this, new EventArgs());


}



如果需要的话可以定义自己的EventArgs 类
[解决办法]
本帖最后由 caozhy 于 2012-09-14 09:50:57 编辑
引用:
谢谢楼上各位回复习!我是这么想的,比如DLL本身里:
//send data to perial
//call sendMsg 就是想给调用它的程序发数据 sendMsg


而在调用它的程序里,可能是这样的:
callback(ref msg)
{
//接收到sendMsg
//根据数据及类型程序处理
}
而它应该是异步的,如果没有数据则不会进入……

按照我说的做就能解决你的问题,不过你需要一个消息句柄,看你想怎么获取了这个是个难点。
SendMessage是同步发送,还有一个异步的叫什么我忘记了,你可以自己定义一个消息,一直监听这个消息
一旦发现是你的消息就进行处理就行了,

读书人网 >C#

热点推荐