如何将我的C#winform程序转换为服务程序?
我需要我的程序像服务一样工作(比如监听器)
答案 0 :(得分:5)
Windows服务没有GUI,所以谈论将带有GUI的WinForms应用程序转换为Windows服务的唯一概念几乎没有意义。您可以查看以下有关使用.NET的writing windows services的文章。如果您需要在给定端口上托管一些sevrice,您可以查看hosting a WCF service in a managed Windows service。
答案 1 :(得分:5)
正如Darin已经指出将UI应用程序转换为Windows服务在大多数情况下不是一个好主意。
这就是说,可能有(或者是)边缘情况,这可能是有用的
到目前为止,我还没有尝试使用WinForms应用程序,但我认为步骤几乎与我曾经做过的步骤相同。
我编写了一个后端应用程序,它在99.99%的时间内作为Windows服务运行,但也可以作为控制台应用程序启动,以便更容易/更快地进行调试。
您需要做的事情:
您可以通过查询Environment.UserInteractive
来检测用户是否启动了应用程序 - 如果以Windows服务启动,则返回false
,在用户模式启动时返回true
。
你的主要方法应该是这样的:
static void Main()
{
// do common initialization, logging framework + the likes
if (Environment.UserInteractive)
{
// start up in user mode
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new myForm());
}
else
{
// start up as Windows service
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new myService()
};
ServiceBase.Run(ServicesToRun);
}
}