日期:2014-05-17  浏览次数:20959 次

C#DLL中回调函数实现
请教各位:现在用C#封装了一个DLL,想在DLL运行的时候动态回传有关信息给调用的程序,比如打开了串口,下发了什么数据,接收了什么数据,都是在实时的回传,请问怎么实现,不是在C#里调用其他比如C写的DLL里有回调如何调用,而是C#自己的实现,谢谢了!

------解决方案--------------------
http://www.cnblogs.com/cssmystyle/archive/2012/03/15/2397524.html
------解决方案--------------------
不道,来听听。
INVOKE,也没有回调,委托好像也不行。
------解决方案--------------------
探讨

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

------解决方案--------------------
使用事件或者委托。

------解决方案--------------------
听起来就是Event. 

类似


C# code

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

    类定义
    {
        
        public event PortOpenedHander PortOpened;

        public void OpenPort()
        {
            
            //打开端口
            
            //成功后
            if (PortOpened != null)
                PortOpened(this, new EventArgs());


        }

------解决方案--------------------
探讨
谢谢楼上各位回复习!我是这么想的,比如DLL本身里:
//send data to perial
//call sendMsg 就是想给调用它的程序发数据 sendMsg


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