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

时间:2014-04-09 07:52:45

标签: c# winforms windows-services notifications system-tray

我用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应用程序?或支持GUI的Windows服务?或任何其他。 如果它应该在WinForm中,那么我应该为这两件事做些什么。

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

1 个答案:

答案 0 :(得分:0)

我认为它应该是Window Service。

我的拇指规则是这样的:

  

如果需要始终运行,则应该是服务。

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

您可以在启动文件夹中复制exe。每当计算机启动时,Exe也将自动启动。

OR

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

 private void RegisterInStartup()
{
    RegistryKey registryKey = Registry.CurrentUser.OpenSubKey
            ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

     registryKey.SetValue("ApplicationName", Application.ExecutablePath);

}

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

重要链接:

How to create Window Service Application

BackgraundWorker Class