当前位置:编程学习 > C#/ASP.NET >>

C#调用C++的DLL,回调函数正确执行一次后,报exe应用程序错误,大家遇到过没有?

C#调用C++的DLL,回调函数正确执行一次后,报exe应用程序错误(Xp系统,说exe程序遇到错误需要关闭,询问是否发送问题报告),大家遇到过没有?能正确执行一次,说明接口和函数定义都没有问题啊,可刚执行完,就报错了,不执行回调函数就不报错。 --------------------编程问答-------------------- 这个问题遇到过的
是.net的内存回收机制把回调的东西给回收了
解决方法是让程序等待回调
也就是用调用函数中循环Thread.Sleep(100)等待回调完成 --------------------编程问答-------------------- 谢谢,能不能稍微详细一点儿呢?我在哪儿循环等待?怎么知道回调已完成呢?谢谢! --------------------编程问答-------------------- 拜托大家了,急啊... --------------------编程问答-------------------- 把你C# 的函数改静态函数看看。 --------------------编程问答-------------------- 回调函数本身就得定义成静态的啊... --------------------编程问答-------------------- 在调用函数中等待啊,你可以设置个全局变量来监视回调是否完成,没完成一直等待 --------------------编程问答-------------------- 楼上说的等待也不是好方法,如果一直没有回调完成,那么线程就阻塞了,如果不是多线程的程序会造成程序卡死,如果是多线程的那么内存会一直消耗知道耗尽内存

我也被回调函数折腾了快1年了,没有好方法,现在一般用多线程或者计时器“改写”回调方法 --------------------编程问答-------------------- 因为这个垃圾的垃圾回收机制。
都要换开发工具了。
没有办法,没有什么地方说明,可以停止使用垃圾回收机制。
十分的郁闷。 --------------------编程问答-------------------- 回调函数的delete的声明为static的就可以了,这是因为被回收了所以才报错的; --------------------编程问答-------------------- Project Property-->Build tab-->Optimize code,把前面的钩取掉试试 --------------------编程问答-------------------- 请参考
http://social.msdn.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/6bcf46db-2c2a-4201-9d90-5476be1c0a4f
,应该可以解决问题。
这才是正道。 --------------------编程问答-------------------- 07年的帖子。。。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,