Как разработать приложение в системном трее, которое выполняет некоторые фоновые процессы в C#?
Я разработал приложение для уведомлений с помощью C# winform. Но теперь в этом я хочу добавить функциональность для отображения окна уведомлений каждые 10 секунд.
Вся моя идея приложения:
Я хочу разработать приложение, которое может находиться в фоновом режиме. Системный значок всегда отображается. Когда пользователь нажимает на этот значок, откроется контекстное меню, и будут некоторые варианты. Когда пользователь нажимает на меню, там появляется WinForm. При первом запуске этого приложения отобразится форма конфигурации. Кроме того, он будет отображать окно уведомления каждые 10 секунд. Это окно уведомлений представляет собой небольшое окно, оно появится в правой нижней части экрана. Так же, как мы видим быстрое лечение антивирусных уведомлений. Это приложение или служба должны автоматически запускаться при запуске компьютера.
В настоящее время я использую этот подход:
using (ProcessIcon ProccIcon = new ProcessIcon()) // ProcessIcon class encapsulating whole functionlity of system tray icon
{
ProccIcon.Display(); // This will display process icon
// Make sure the application runs!
Application.Run(); // application start, when user click on tray icon, menu will display and application execution stuck here until application will not terminate.
}
Итак, вопрос в том, какова наилучшая практика для разработки приложений такого типа. Это должно быть приложение winform? или служба Windows с поддержкой GUI? Или любой другой. Если это должно быть в WinForm, то что мне делать для этих двух вещей.
- Автоматический запуск приложения при запуске компьютера.
- Должен регулярно работать в фоновом режиме и отображать оповещение через фиксированный интервал времени.
1 ответ
Я думаю, что это должно быть Window Service.
Мое правило большого пальца это:
Если он должен всегда работать, это должен быть сервис.
Изменить для (запускать приложение при каждом запуске системы):
Вы можете скопировать исполняемый файл в папку автозагрузки. Всякий раз, когда компьютер запускается, Exe также будет запускаться автоматически.
ИЛИ ЖЕ
Добавить реестр для запуска приложения
private void RegisterInStartup()
{
RegistryKey registryKey = Registry.CurrentUser.OpenSubKey
("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
registryKey.SetValue("ApplicationName", Application.ExecutablePath);
}
Для второго пункта вы можете использовать BackGroundWorker
Важная ссылка: