私は .Net 3.5 C# Winforms アプリを持っています。GUI 自体はなく、ContextMenu を備えた NotifyIcon だけです。
次のように、NotifyIcon を visible=false に設定し、Application_Exit イベントで破棄しようとしました。
if (notifyIcon != null)
{
notifyIcon.Visible = false;
notifyIcon.Dispose();
}
アプリは括弧内のコードに到達しますが、Visible = false を設定しようとすると null ref 例外がスローされます。
フォームを閉じるイベントに入れるためにいくつかの場所を読んだことがありますが、そのコードは決してヒットしません (フォームがそのように表示されていないためでしょうか?)。
実際に機能するように、このコードをどこに置くことができますか? 入れないと、マウスをその上に移動するまで、迷惑なアイコンがトレイに残ります。
乾杯。
編集
私が気づいた余分な何か........
アプリで ClickOnce を使用しています.........NotifyIcon の ContextMenu からアプリを終了すると、例外はログに記録されません。
ここでアプリケーションがアップグレードをチェックした後、Application_Exit イベントが発生したとき..
private void CheckForUpdate()
{
EventLogger.Instance.LogEvent("Checking for Update");
if (ApplicationDeployment.IsNetworkDeployed && ApplicationDeployment.CurrentDeployment.CheckForUpdate())
{
EventLogger.Instance.LogEvent("Update available - updating");
ApplicationDeployment.CurrentDeployment.Update();
Application.Restart();
}
}
これは役に立ちますか?