我在C#.NET中编写了一个程序,需要在后台运行。我的意思是它应该有任何用户界面。既不是GUI也不是CLI。它也不是windows service
(因为它必须在用户登录后才能运行)。
它应该只在后台运行。此类计划的示例包括AdobeUpdater.exe
,GoogleUpdater.exe
等。
答案 0 :(得分:5)
另一种选择是创建Windows应用程序并设置这两个属性:
this.WindowState = FormWindowState.Minimized;
this.ShowInTaskbar = false;
答案 1 :(得分:5)
您可以创建一个控制台应用程序,然后将项目设置中的属性更改为Windows应用程序(而不是控制台)。或者,您可以创建一个实际上不创建任何表单的Windows窗体应用程序。
答案 2 :(得分:2)
我经常在这种情况下使用以下解决方案:创建应用程序上下文并在WinForm的项目中使用它而不是表单。
创建applicationcontext类
public class MyApplicationContext : ApplicationContext
{
public MyApplicationContext()
{
}
void Exit(object sender, EventArgs e)
{
Application.Exit();
}
}
在Program.cs中 - >替换原始的Application.Run()调用
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 frm = new Form1(); //remove if not needed
Application.Run(new MyApplicationContext());
}
由于您不再显示该表单,因此您需要提供其他方法来关闭该应用程序。即使用系统托盘然后调用:
Application.Exit();
注意:使用上面的内容(没有显示表单),你永远不会得到像加载,关闭,关闭这样的常规表单事件。
答案 3 :(得分:0)
使用任务计划程序按计划运行它(可以基于用户登录的时间)。或者将其添加到注册表以在启动时运行。
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
答案 4 :(得分:0)
您可能会重新考虑使用Windows服务,并使用System.Management.ManagementEventWatcher
类监控登录/注销事件。这给出了一个注销事件观察器的示例:http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/0c1bded8-0cce-4260-bd28-4b4ffce0d27d。