长时间运行的托盘应用程序

本文关键字:应用程序 运行 长时间 | 更新日期: 2023-09-27 18:30:14

可能的重复项:
使用 .NET 编写 Windows 系统托盘应用程序

我想开发一个托盘应用程序。这应该做的是它必须继续寻找最近修改的文件。一旦文件被捕获,它将该文件的副本复制到Web服务器。因此,用户将能够登录到该网站,稍后用户将能够下载这些备份文件。我想知道的是如何开发托盘应用程序?我必须为此编写一个Windows服务吗?如果是这样,我需要一个托盘应用程序来控制服务(托盘应用程序必须具有启动和停止服务的功能[备份服务],选择文件扩展名的选项)我正在使用 c#。提前非常感谢。

长时间运行的托盘应用程序

听起来

很简单。

创建一个基本的WinForms应用程序。应用的主窗口应开始"最小化",并且不应显示在任务栏中。但是,它应该有一个"NotifyIcon"组件,它允许应用程序显示在系统托盘中。双击通知图标将恢复窗口,在任务栏中显示窗口并隐藏通知图标,直到窗口最小化或再次关闭。

此应用程序可以自行监视文件,也可以编辑Windows服务使用的配置;无论哪种方式都可以。无论哪种方式,您都需要设置一个 FileSystemWatcher(或其中的几个)来监视用户希望您检查的目录中的文件。当文件系统观察器看到文件更改时,它将触发一个事件,您可以通过执行上传到 Web 服务器来处理该事件。

作为整个设计的旁白;如果你正在实现一个在线备份系统(看起来你是),我会确保用户可以访问文件的几个过去的迭代,以防他们想要恢复以前的版本。您还应该进行病毒检查;用户最不需要的就是病毒破坏他们的文件,并且您的备份系统已经备份了损坏的文件。

我个人不会让它像一个Windows Service,但会选择一个简单的应用程序,"存在于"系统后面。它更容易维护和更新,从客户端卸载(根据他的要求)。简而言之,对于简单的事情,我不会选择Windows Service。

我会添加一个带有一些菜单的系统托盘组件。你可以看看 Philipp Sumi 的 WPF NotifyIcon。

其中一个菜单项可以具有注册要在操作系统启动时运行的可执行文件的项。您可以使用代码来实现这一点:

Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE''Microsoft''Windows''CurrentVersion''Run", true);
Assembly curAssembly = Assembly.GetExecutingAssembly();
key.SetValue(curAssembly.GetName().Name, curAssembly.Location);

如果由于某种原因,由于从您的帖子中不太清楚,您的应用程序确实会在相当大的生产环境中管理大量数据,请使用WindowsService并管理所有相关内容。

希望这有帮助。