我以C#中的默認Windows窗體應用程序開始,我改變的只是Progam.cs。從main函數,我改變如何在C#系統托盤應用程序中重複運行代碼(如在計時器上)?
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事件。我只是不知道事件是如何工作的或者代碼的放置位置。
因爲您的構造函數正在調用遞歸函數,所以它永遠不會完成,並且該對象不可用。 – Jay