Stack Overflow 上已经有一些关于这个主题的非常好的主题,但似乎并没有一个简洁的答案。我的 C# 控制台应用程序(作为 Windows 服务运行)启动 Java 进程并对其进行管理(启动/停止/重新启动它),但我的问题是我将远程进入机器,并且有时会看到它启动了大约 20 个 Java 进程。
这显然是我的应用程序在某个时候崩溃的问题,并且没有关闭它启动的 Java 进程。我在 AppDomain.CurrentDomain 中挂上了“UnhandledExceptionEventHandler”,并从中调用 TerminateProcess()(关闭活动的 Java 进程),但这个问题仍然偶尔发生。
我的应用程序有主线程、一个 TCP 服务器线程(它接受异步连接)和一个 UDP 服务器线程。在 UnhandledException 之上还有什么我应该挂钩的吗?
编辑
我还突然想到,我的代码中有几个 Try/Catch 块,它们只是写入控制台,而我从未见过。我应该删除这些以便它们被 UnhandledException 捕获还是在那里添加一个记录器?