语言:C#
运行时:.NET 4 客户端
问题:在大约 14 分钟发生垃圾收集(如诊断工具中所示)时,此时会立即出现异常并显示以下信息:
在 Test.exe 中的 0x163BA480 处引发异常:0xC0000005:执行位置 0x163BA480 的访问冲突。
我的程序引用了第三方程序,旨在通过插件添加其他功能。
我的程序由程序集组成:
- 我的主程序从 .cs 文件编译附加程序集,在 WPF 窗口中显示它们的名称。
- 仅处理日志记录的辅助项目,是同一解决方案的一部分。
- 负责加载插件的附加项目,是同一解决方案的一部分。
- 任意数量的加载插件程序集。
所有程序集都加载到同一个 Appdomain 中。最终,这将被更改,以便每个程序集都在它自己的 Appdomain 内。
在这种特定情况下,插件程序集是一个简单的类定义,没有其他执行代码/方法,即:
using System;
using Interface;
namespace TestAddin
{
public class TestAddin
{
}
}
输出:
程序成功运行,加载程序集并显示它们。
然后程序执行第三方程序(通过引用 dll 中的 Run() 方法)
程序又成功执行了约 14 分钟,直到发生前面提到的异常。
我不知道如何调试这个,我怎么知道异常发生在哪里?我编写的三个项目都没有使用非托管代码,并且引用的程序集在 C# 中运行,我找不到使用 dotpeek 的非托管代码。
任何帮助将不胜感激,如果需要任何进一步的信息,我很乐意提供。