Как сделать мою программу фоновым процессом - PullRequest
5 голосов
/ 03 февраля 2010

Я написал программу на C # .NET, которую нужно запускать в фоновом режиме. Я имею в виду, что он должен иметь любой пользовательский интерфейс. Ни GUI, ни CLI. Это также не windows service (потому что он должен запускаться только после входа пользователя).

Он должен просто работать в фоновом режиме. Примером таких программ являются AdobeUpdater.exe, GoogleUpdater.exe и т. д.

Ответы [ 5 ]

5 голосов
/ 03 февраля 2010

Другой вариант - создать приложение Windows и установить эти два свойства:

        this.WindowState = FormWindowState.Minimized;
        this.ShowInTaskbar = false;
5 голосов
/ 03 февраля 2010

Вы можете создать консольное приложение, а затем изменить его свойства в настройках проекта на приложение Windows (а не на консоль). Или вы можете создать приложение Windows Forms, которое фактически не создает никаких форм.

2 голосов
/ 02 марта 2015

Я часто использую следующее решение для этого случая: создайте контекст приложения и используйте его в проекте WinForm вместо формы.

  1. Создать класс контекста приложения

    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();
    

Примечание. Используя вышеприведенное (не отображая форму), вы никогда не получите обычные события формы, такие как загрузка, закрытие, закрытие,

0 голосов
/ 03 февраля 2010

Вы можете пересмотреть использование службы Windows и заставить ее отслеживать события входа / выхода из системы, используя класс System.Management.ManagementEventWatcher. Это дает пример наблюдателя события выхода из системы: http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/0c1bded8-0cce-4260-bd28-4b4ffce0d27d.

0 голосов
/ 03 февраля 2010

Используйте Task Scheduler для запуска его по расписанию (которое может быть основано на том, когда пользователь входит в систему). Или добавьте его в реестр для запуска при запуске.

HKLM\Software\Microsoft\Windows\CurrentVersion\Run
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...