首页新闻找找看学习计划

子线程调用动态库接口时提示:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

0
悬赏园豆:5 [已解决问题] 解决于 2019-01-24 10:49

用c#语言在主线程中调用c++写的动态链接库没有问题,但是在子线程中调用就报:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
这是为什么,应该如何解决,帮个忙,谢谢大家。

第三方接口声明:
[DllImport(@"SendPos.dll", CallingConvention = CallingConvention.StdCall)]
static extern UInt32 SendPos(string strSend, [MarshalAs(UnmanagedType.LPArray, SizeConst = 4096)] byte[] pBuff);

小徐的工作学习随笔的主页 小徐的工作学习随笔 | 初学一级 | 园豆:198
提问于:2018-10-11 16:46
< >
分享
最佳答案
0

调用的时候:Action actions = () =>
{
SendPos(***);
}
actions.BeginInvoke(null, null);
的方式调用,win xp 下不会访问受保护的内存,win 7有的会出现访问受保护的内存。
采用顺序同步调用则没有以上问题。

小徐的工作学习随笔 | 初学一级 |园豆:198 | 2019-01-24 10:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册