システム トレイのアイコンを更新する小さくてシンプルな C# アプリケーションがあります。これを使用して、CPU 使用率をグラフィカルに表示します。アプリケーションはうまく機能します。邪魔にならないように、ウィンドウを非表示にしてタスクバーに表示しません。
私の問題は、しばらくの間うまくいくということです。多くの場合、数時間。しかし、それは不思議なことに終了します。警告はありません。何もない。アイコンがなくなり、プログラムが実行されなくなりました。さまざまな条件下でデバッガーでプログラムをテストしたので、それだけではないと思います。私が見逃している明らかなものはありますか?プログラムでエラーが発生して終了した場合、フォームが非表示の場合にメッセージが表示されるはずですか? 「キープアライブ」メッセージまたは処理する必要があるものはありますか?
コードの関連セクションは次のとおりです。
public Form1()
{
InitializeComponent();
trayIcon = new NotifyIcon();
trayIcon.Text = "CPU Utilization";
trayIcon.Icon = new Icon(SystemIcons.Application, 40, 40);
trayIcon.Visible = true;
update = new Thread(new ThreadStart(UpdateCPU));
update.Start();
}
protected override void OnLoad(EventArgs e)
{
Visible = false;
ShowInTaskbar = false;
base.OnLoad(e);
}
private void UpdateCPU()
{
Bitmap bm = new Bitmap(32, 32);
Graphics g = Graphics.FromImage(bm);
while (true)
{
g.FillRectangle(new SolidBrush(c3), 17, 17, 15, 15);
trayIcon.Icon = System.Drawing.Icon.FromHandle(bm.GetHicon());
Thread.Sleep(1000);
}
}
どんな助けでも大歓迎です!