C#调用C++DLL中的回调函数

huangxy10 2013-05-15 01:36:48


C++的DLL是一个COM对象。

COM对象中定义了一个回调函数
typedef int (*FunA)(int a);[;/code]

还定义了一个注册回调函数的方法:
[code=c]bool RegisterFunA( FunA pFunA);


RegisterFunA的功能是注册FunA,当COM中有某事件发生后,
COM会调用pFunA函数。(会多次调用)

在C#中,我使用delegate(代理)来实现回调函数,
并将回调函数注册了,
可是我用的是控制台应用程序,
注册完回调函数后,
程序就执行下去直至结束。

可能COM还没有来得及调用pfunA,程序就结束了。
请问我怎么才能让控制台等待COM调用pfunA?

我C#中代码为:


class ABC
{
public int delegate FunADelegate( int a);
public int FunA(int a)
{
return a;
}

[DllImport("mycom.dll")]
public extern static Bool RegisterFunA( FunADelegate pFunA);

public static bool Main()
{
ResisterFunA( FunA );
}



...全文
527 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
vnking 2015-08-30
  • 打赏
  • 举报
回复
后人来了,失望而归
引用 9 楼 cainiao77 的回复:
解决了问题要把解决办法贴出来。要不然后来人还得发帖子。
cainiao77 2014-10-30
  • 打赏
  • 举报
回复
解决了问题要把解决办法贴出来。要不然后来人还得发帖子。
u014157697 2014-10-14
  • 打赏
  • 举报
回复
怎么解决的啊
xiutaorong 2013-11-14
  • 打赏
  • 举报
回复
我也遇到了,只不过我的是C#调用C#的dll,dll里面是异步通讯的回调函数。
xiutaorong 2013-11-14
  • 打赏
  • 举报
回复
怎么解决的啊?
huangxy10 2013-05-16
  • 打赏
  • 举报
回复
引用 4 楼 findcaiyzh 的回复:
自己解决了?
恩,解决了。
宝_爸 2013-05-15
  • 打赏
  • 举报
回复
自己解决了?
huangxy10 2013-05-15
  • 打赏
  • 举报
回复
huangxy10 2013-05-15
  • 打赏
  • 举报
回复
貌似这个方法可以解决问题。 http://blog.csdn.net/huangxy10/article/details/8928487
huangxy10 2013-05-15
  • 打赏
  • 举报
回复
更正一下: COM对象中定义了一个回调函数
typedef int (*FunA)(int a);
还定义了一个注册回调函数的方法:
bool RegisterFunA( FunA pFunA);

110,533

社区成员

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

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

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