如何开发一个在C#中进行后台处理的系统托盘应用程序

本文关键字:处理 后台 系统 应用程序 开发 何开发 一个 | 更新日期: 2023-09-27 17:57:36

我已经用C#winform开发了一个通知应用程序。但现在我想添加功能,在每10秒内显示一个通知窗口。

我的整个应用程序想法是:

我想开发一个可以驻留在后台的应用程序。A.系统尝试图标始终显示。当用户单击此图标时,上下文菜单将打开,并且会有一些选项。当用户点击菜单中会出现一个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应用程序吗?还是支持GUI的windows服务?或任何其他。如果它应该在WinForm中,那么我应该为这两件事做些什么。

  1. 计算机启动时自动启动应用程序
  2. 应定期在后台运行,并在固定的时间间隔内显示警报

如何开发一个在C#中进行后台处理的系统托盘应用程序

我认为应该是Window Service。

我的经验法则是:

如果它需要始终运行,那么它应该是一个服务。

编辑(在系统启动时启动应用程序):

你可以在启动文件夹中复制一个exe。每当计算机启动时,Exe也会自动启动。

添加注册表以启动应用程序

 private void RegisterInStartup()
{
    RegistryKey registryKey = Registry.CurrentUser.OpenSubKey
            ("SOFTWARE''Microsoft''Windows''CurrentVersion''Run", true);
     registryKey.SetValue("ApplicationName", Application.ExecutablePath);
}

对于第二点,您可以使用BackGroundWorker

重要链接:

如何创建窗口服务应用程序

BackgraundWorker类