【发布时间】:2012-03-27 20:21:05
【问题描述】:
我正在开发一个 Windows 应用程序(不是 WinForms,不是控制台,不是 WinService),只是一个带有入口类的项目。 在 .NET 中,阻止应用程序退出 Main 方法的最佳方法是什么?
我知道我可以在控制台中使用 Console.Read() 来实现这一点,或者我可以使用 EvenWaitHandle.WaitOne() 而从不调用 Set()。
有更好的方法吗?
提前感谢您的帮助。
更新:
这是应用程序的概述。
我需要按需启动包含 wcf 服务的独立进程(一些 exe)。 WCF 服务应该听得很清楚,这就是我需要这个功能的原因。我能找到的最相似的方法是 IIS(许多 w3wp 进程同时运行)。
w3svc.exe(IIS windows 服务)根据配置的应用程序池的数量和它接收的请求启动许多 w3wp.exe 实例。
在我的应用程序中,我想在 IIS 基础结构中保持代表 w3wp.exe 的进程,而不是 w3svc。什么样的消息循环可以让 w3wp 在 .NET 中保持活跃?
【问题讨论】:
-
应用程序实际上在做什么?你有另一个线程打开做工作吗?如果是这样,请不要将其放在另一个线程中,以便 main 方法在工作完成之前不会结束(即使工作永远不会完成)。
-
@AnuragRanjhan 在 for 循环中多了一个
;,这些选项比WaitOne或Thread.Sleep更糟糕 -
没错。我有一个 wcf 服务在上面运行。它不能是 Windows 服务,因为我需要同时运行许多相同的进程 (exe) 并按需启动它们或关闭它们。
-
@Servy 已修复,我同意。只是列出选项:)。
-
我有一个管理这些进程的 Windows 服务。但除非服务关闭进程,否则进程应继续侦听。关闭进程与完成任何任务没有任何关系。