我有一个 Windows 服务,它DllImport
在不同的线程中运行非托管代码(使用)。
有时,非托管代码“挂起”。想想while (true) ;
。发生这种情况时,我需要终止整个进程(它会自动启动另一个进程,因为它是 Windows 服务)。
是否Environment.Exit(int)
足够?或者我需要例如Environment.FailFast(string)
?
编辑:我无法“测试”这个。冻结是随机发生的。
我有一个 Windows 服务,它DllImport
在不同的线程中运行非托管代码(使用)。
有时,非托管代码“挂起”。想想while (true) ;
。发生这种情况时,我需要终止整个进程(它会自动启动另一个进程,因为它是 Windows 服务)。
是否Environment.Exit(int)
足够?或者我需要例如Environment.FailFast(string)
?
编辑:我无法“测试”这个。冻结是随机发生的。
是的。Environment.Exit将杀死当前进程中运行的所有线程,包括主线程(和进程本身)。
Environment.FailFast会将事件记录到应用程序日志中,然后终止进程和当前进程中的所有线程。
从微软官方文档中,Environment.Exit
:
终止此进程并向操作系统返回退出代码。
更有用的是,文档继续说明:
听起来Environment.Exit
完全可以满足您的需求。