c# - PInvoke FatalExecutionEngineError 在不同的线程中
问题描述
我的代码工作正常,但 5-10 分钟后,我收到以下错误;
托管调试助手'FatalExecutionEngineError':'运行时遇到致命错误。错误地址位于线程 0x5d0c 上的 0x641ad419。错误代码为 0xc0000005。此错误可能是 CLR 中的错误或用户代码的不安全或不可验证部分中的错误。此错误的常见来源包括 COM 互操作或 PInvoke 的用户封送错误,这可能会损坏堆栈。
从不同的线程调用;
InvokeUtil.getInstance.Calculate(localVal);
我的代码;
public class InvokeUntil
{
private IntPtr m_object = IntPtr.Zero;
private static InvokeUntil Self;
private InvokeUntil()
{
this.m_object = InvokeUntil.DllCreateInstance();
}
[DllImport("xDll")]
private static extern IntPtr DllCreateInstance();
[DllImport("xDll")]
private static extern void DllDisposeInstance(IntPtr CSObject);
[DllImport("xDll")]
private static extern void DllCalculate(IntPtr pCSObject, byte[] pCurrentData, uint[] pResult);
public static InvokeUntil getInstance
{
get
{
if (InvokeUntil.Self == null)
InvokeUntil.Self = new InvokeUntil();
return InvokeUntil.Self;
}
}
public void Calculate(uint[] EffVal)
{
InvokeUntil.DllCalculate(m_object, Data.MyData, EffVal);
}
}
解决方案
推荐阅读
- mysql - 数据迁移服务 (DMS):出现错误后如何继续(无法执行删除语句)?
- google-admin-sdk - 通过 API [Powershell] 分配 Google Workspace 许可
- c# - 使用 httpContext asp.net core mvc 将用户名传递到标头
- node.js - TypeError:tagIds.join 不是函数
- python - pyyaml 无法加载 python 对象
- python-3.x - Xcode Python - 符号链接的级别太多
- api - LinkGenerator.GetUriByAction 不遵循自定义路线
- perl - 从 Perl 调用静态 Java 方法
- python - 在 Bunch 类型对象中设置和获取属性
- reactjs - 如何使用 React 功能组件通过循环回调获取 api