我有一个Windows Forms应用程序,它监控收件箱和数据库。客户告诉我需要在服务器重新启动时运行该应用程序。对不起,让客户改变需求是我的错。
我在想...是否有办法将Windows Forms应用程序作为服务运行,以便它可以自动启动?
澄清:如果可能的话,我希望尽量不编写更多代码!
我在想...是否有办法将Windows Forms应用程序作为服务运行,以便它可以自动启动?
澄清:如果可能的话,我希望尽量不编写更多代码!
这个答案已经过时,因为链接的文章在2012年被删除。然而,StackOverflow不允许删除被接受的答案。所以,请不要给这个答案投反对票,因为我已经告诉你它已经过时了。
备用链接: https://web.archive.org/web/20111221041348/http://www.codeproject.com/kb/system/xyntservice.aspx
C++源代码(或使用该文章上的Browse Code选项卡):https://web.archive.org/web/20111228050501/http://www.codeproject.com/KB/system/xyntservice.aspx
不幸的是,Zip文件源代码下载在备用链接中无法使用。
看看这篇文章:http://www.codeproject.com/script/Articles/ArticleVersion.aspx?aid=719&av=49654
虽然这是一篇很旧的文章,但它已经运行了8年,并且作者一直在更新。它可以做你想要的事情。
你可以将WinForms应用程序作为服务运行,但你将无法看到它--它将显示在所谓的虚拟桌面上,这个桌面无法在你的监视器上查看。
您可以使用InstallUtil将您的应用程序安装为服务,但您需要确保它不依赖于GUI,并且我建议您更改应用程序的启动方式,以便它不会尝试创建任何窗体。
protected override void OnStart(string[] args)
{
Processor processor = new Processor();
Thread workerThread = new Thread(processor.OnStart);
workerThread.IsBackground = true;
try
{
workerThread.Start();
}
catch
{
//...
}
}