【发布时间】:2015-03-01 16:33:03
【问题描述】:
我在 Windows Azure Server 2012 R2 VM 上的 Windows 服务应用程序中发现了非常有趣的行为。我的 windows 服务调用,
ThreadPool.QueueUserWorkItem((_) => DoWork());
在 DoWork 中,
private static void DoWork()
{
try
{
// Do all work
Environment.Exit(0);
}
catch (Exception ex)
{
Logger.Log(ex);
}
}
对Environment.Exit(0) 的调用导致进程崩溃。没有登录事件查看器,也没有更多信息。只是process unexpectedly terminated。为什么 try/catch 在那里不起作用?这是 Windows 服务应用程序的预期行为吗?
【问题讨论】:
-
你不应该从这样的线程中关闭你的应用程序......
标签: c# azure windows-services windows-server-2012-r2