如何使我的程序成为后台进程

时间:2010-02-03 17:36:19

标签: c# .net user-interface

我在C#.NET中编写了一个程序,需要在后台运行。我的意思是它应该有任何用户界面。既不是GUI也不是CLI。它也不是windows service(因为它必须在用户登录后才能运行)。

它应该只在后台运行。此类计划的示例包括AdobeUpdater.exeGoogleUpdater.exe等。

5 个答案:

答案 0 :(得分:5)

另一种选择是创建Windows应用程序并设置这两个属性:

        this.WindowState = FormWindowState.Minimized;
        this.ShowInTaskbar = false;

答案 1 :(得分:5)

您可以创建一个控制台应用程序,然后将项目设置中的属性更改为Windows应用程序(而不是控制台)。或者,您可以创建一个实际上不创建任何表单的Windows窗体应用程序。

答案 2 :(得分:2)

我经常在这种情况下使用以下解决方案:创建应用程序上下文并在WinForm的项目中使用它而不是表单。

  1. 创建applicationcontext类

    public class MyApplicationContext : ApplicationContext
    {
            public MyApplicationContext()
            {
            }
    
            void Exit(object sender, EventArgs e)
            {
                    Application.Exit();
            }
    }
    
  2. 在Program.cs中 - >替换原始的Application.Run()调用

    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
    
        Form1 frm = new Form1(); //remove if not needed 
        Application.Run(new MyApplicationContext());
    }
    
  3. 由于您不再显示该表单,因此您需要提供其他方法来关闭该应用程序。即使用系统托盘然后调用:

    Application.Exit();
    
  4. 注意:使用上面的内容(没有显示表单),你永远不会得到像加载,关闭,关闭这样的常规表单事件。

答案 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