如下所示,c#中调用c++的函数,函数的一个参数为 函数指针,即回调函数,用delegate。debug下可以,但是release出错。
说:**指令引用的**内存,该内存不能为read
在网上搜了一下,说 因为delegate委托一会自己就释放了,而我的函数里却一直在用他,放在很多个线程里用它
请问,怎么解决?
public delegate void CallBack(IntPtr a);
namespace DLLThreadPool
{
class Program
{ [DllImport("DLLDemo.dll", CharSet = CharSet.Auto)]
public static extern Int32 funcThreadPool(Int32 nPoolJobList, Int32 nPoolJobNum, Int32 nPoolThreadNum, CallBack cBack);
public static void fun_type1(IntPtr iPtr)
{
Thread.Sleep(50);
return ;
}
public static void Main(string[] args)
{
CallBack cb=new CallBack(Program.fun_type1);
int i = funcThreadPool(1000, 10000, 500, cb);
}
}
}
说:**指令引用的**内存,该内存不能为read
在网上搜了一下,说 因为delegate委托一会自己就释放了,而我的函数里却一直在用他,放在很多个线程里用它
请问,怎么解决?
public delegate void CallBack(IntPtr a);
namespace DLLThreadPool
{
class Program
{ [DllImport("DLLDemo.dll", CharSet = CharSet.Auto)]
public static extern Int32 funcThreadPool(Int32 nPoolJobList, Int32 nPoolJobNum, Int32 nPoolThreadNum, CallBack cBack);
public static void fun_type1(IntPtr iPtr)
{
Thread.Sleep(50);
return ;
}
public static void Main(string[] args)
{
CallBack cb=new CallBack(Program.fun_type1);
int i = funcThreadPool(1000, 10000, 500, cb);
}
}
}
解决方案 »
- c#电脑锁屏(源码)
- DataGridView导出成EXCEL文挡(是Winform,不是Web)
- 把窗体的边框设为 none 后,单开窗体,窗体还是闪烁一下显示边框,请问可以解决吗?
- xml的问题。今天提问一个下午。谁来接分
- 如何取数据库服务器的磁盘目录,就象sqlserver企业管理器中的数据备份那样,
- 关于Z顺序的小问题,却难倒老师傅。
- 用了C#一段时间后,还不知构造函数与Load函数有什么区别?
- 刚去CHINA-PUB买了本C#的书,过段时间就往C#走了,大家有什么好的建议给俺没?
- 关于windows窗体的一个低级问题,困惑小弟啊!大哥伸伸手啊.
- 谁能给我解析下这奇葩语法?
- 求助如何在前台验证用户名是否存在
- 如何将DataTable中某些字段的值插入到SQL中
while(true)
{
Thread.Sleep(1000);}
后来,我把那个被调函数注释了,然后一点点的取消注释,遇到函数再进入函数内,采用一样的方法,最后查出在执行一句的时候出错,而那句话是我们公司内部的库,晕……
唉……