用c#语言在主线程中调用c++写的动态链接库没有问题,但是在子线程中调用就报:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
这是为什么,应该如何解决,帮个忙,谢谢大家。
第三方接口声明:
[DllImport(@"SendPos.dll", CallingConvention = CallingConvention.StdCall)]
static extern UInt32 SendPos(string strSend, [MarshalAs(UnmanagedType.LPArray, SizeConst = 4096)] byte[] pBuff);
调用的时候:Action actions = () =>
{
SendPos(***);
}
actions.BeginInvoke(null, null);
的方式调用,win xp 下不会访问受保护的内存,win 7有的会出现访问受保护的内存。
采用顺序同步调用则没有以上问题。