我从 C# 中的默认 Windows 窗体应用程序开始,我更改的只是 Progam.cs。从主要功能,我改变了
Application.Run(new Form1());
至
Application.Run(new MyCustomApplicationContext());
它指的是一个自定义类 (MyCustomApplicationContext:ApplicationContext),它将我的程序作为系统托盘图标而不是 Windows 窗体运行。构造函数包含以下代码:
private NotifyIcon trayIcon = new NotifyIcon();
trayIcon.ContextMenu = new ContextMenu(
new MenuItem[]
{
new MenuItem("Exit", Exit)
});
这允许用户右键单击该图标,为他们提供一个带有“退出”选项的上下文菜单,该选项将运行一个关闭程序的功能。
在 MyCustomApplicationContext 的构造函数结束时,我在名为 Update() 的类中调用递归函数,该函数执行 ping 函数并根据 ping 延迟更改系统托盘图标。
不幸的是,我相信因为它是递归的,所以它不允许运行任何其他代码,所以右键单击上下文菜单永远不会出现。我宁愿通过事件调用 Update() 函数,例如 System.Timers.Timer Elapsed 事件。我只是不知道事件如何工作或将代码放在哪里。