首页 > 解决方案 > Environment.Exit(int) 会用运行非托管代码的踏板杀死我的应用程序吗?

问题描述

我有一个 Windows 服务,它DllImport在不同的线程中运行非托管代码(使用)。

有时,非托管代码“挂起”。想想while (true) ;。发生这种情况时,我需要终止整个进程(它会自动启动另一个进程,因为它是 Windows 服务)。

是否Environment.Exit(int)足够?或者我需要例如Environment.FailFast(string)

编辑:我无法“测试”这个。冻结是随机发生的。

标签: c#environmentfail-fast

解决方案


是的。Environment.Exit将杀死当前进程中运行的所有线程,包括主线程(和进程本身)。

Environment.FailFast会将事件记录到应用程序日志中,然后终止进程和当前进程中的所有线程。


推荐阅读