.net - 我认为我正在处理的未处理的 FileLoadException

标签 .net multithreading fileloadexception

我有一个线程可以像这样初始化:

Utility.Log("1");

myThread = new Thread(new ThreadStart(delegate
{
    Utility.Log("2");

然后线程的其余部分执行。奇怪的是,尽管整个事情都包含在一个 try/catch 中,但我在我的日志文件中只看到一个 1(没有 2),而且我得到了一个未处理的 System.IO.FileLoadException。我也尝试将委托(delegate)的整个主体包装在 try/catch 中,但我仍然收到该异常,并且事件查看器说异常的最顶层方法是该方法。这很奇怪。

关于如何追踪这一点,或者至少正确捕获异常的任何想法?

最佳答案

FileLoadException 是一个非常严重的事故。当 JIT 编译器尝试编译您在线程中运行的代码时会引发它。 try/catch 对无法捕获此异常,因为它是在代码开始执行之前引发的。换句话说,它会在你进入 try block 之前就爆炸了。鉴于这是一个线程,您无法阻止程序崩溃到桌面。您最后的喘息是 AppDomain.UnhandledException,e.ExceptionObject 的 InnerException 属性告诉您真正出了什么问题。

否则,此异常应始终易于修复。这是一个配置问题,JIT 编译器发现一个版本号错误的程序集或者是旧版本的程序集,类似这样。如果您无法从 AppDomain.UnhandledException 诊断它,那么 Fuslogvw.exe 工具可以向您展示它如何找到错误的程序集。完全重建您的解决方案应该是修复的一半。

关于.net - 我认为我正在处理的未处理的 FileLoadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4005876/

相关文章:

c# - 为什么在我的 ASP.Net 网站上大约每周一次出现 System.IO.FileLoadException : Could not load file or assembly,?

c# - 在 .NET 中使用来自另一个程序集的抽象类

c# - 在 ASP.NET MVC 中使用状态机工作流

c++ - 使用使用 std::async 创建的线程发送 MPI 的线程安全

java - 多线程从数据库优化中选择行

c# - 在另一台计算机上运行 C# 程序时出现 System.IO.FileLoadException

c# - 使用性能计数器计算平均值

c# - WCF 服务 - 向后兼容性问题

python - 如何知道 Python multiprocessing.Lock 是否被释放?