C# の既定の Windows フォーム アプリケーションから始めて、変更したのは Progam.cs だけでした。メイン関数から、変更しました
Application.Run(new Form1());
に
Application.Run(new MyCustomApplicationContext());
これは、プログラムを Windows フォームではなくシステム トレイ アイコンとして実行するカスタム クラス (MyCustomApplicationContext:ApplicationContext) を指します。コンストラクターには次のコードが含まれます。
private NotifyIcon trayIcon = new NotifyIcon();
trayIcon.ContextMenu = new ContextMenu(
new MenuItem[]
{
new MenuItem("Exit", Exit)
});
これにより、ユーザーはアイコンを右クリックして、プログラムを閉じる機能を実行する「終了」オプションを含むコンテキスト メニューを表示できます。
MyCustomApplicationContext のコンストラクターの最後で、Update() というクラスの再帰関数を呼び出します。この関数は ping 関数を実行し、ping の遅延に応じてシステム トレイ アイコンを変更します。
残念ながら、再帰的であるため、他のコードを実行することは許可されていないため、右クリックのコンテキスト メニューは表示されません。System.Timers.Timer Elapsed イベントのように、イベントを通じて Update() 関数を呼び出したいと思います。イベントがどのように機能するか、またはコードをどこに配置するかがわかりません。