WPFアプリケーションでウィンドウが表示され、ユーザーがボタンをクリックするとタスクが実行され、コンテキストメニューの通知領域のトレイアイテムに最小化されますユーザーが操作を取り消すことができるようにします。アプリケーションがバックグラウンドワーカーを実行しているときにNotifyIconが表示されない
BackgroundWorkerを使用する前にコンテキストメニューが機能しましたが、キャンセルはできませんでした。バックグラウンドワーカーを実装して以来、.runworkerasync()メソッドが実行されるとコンテキストメニューは表示されません。
マイアイコン通知:ユーザーがボタンをクリックすると、その後
private void setup_NotifyIcon()
{
myNotifyIcon = new NotifyIcon();
setTrayIcon();
myNotifyIcon.MouseDown += new MouseEventHandler(myNotifyIcon_MouseDown);
var menuItemCancel = new MenuItem("Cancel Parsing");
var contextMenu = new ContextMenu();
menuItemCancel.Click += new System.EventHandler(this.menuItemCancel_Click);
contextMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { menuItemCancel });
myNotifyIcon.ContextMenu = contextMenu;
}
private void menuItemCancel_Click(object Sender, EventArgs e)
{
//do something
}
void myNotifyIcon_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
//do something
}
}
を::
worker.RunWorkerAsync();
獲得したのはなぜ私のアプリケーションを実行すると、私はこのようにそれを設定すると
public NotifyIcon myNotifyIcon;
を't myNotifyIcon.MouseDown + =新しいMouseEventHandler(myNotifyIcon_MouseDown);コンテキストメニューを起動しますか?
UIのスレッドコンテキストでコンテキストメニューを表示しないでください。ここを参照pls https://stackoverflow.com/questions/11625208/accessing-ui-main-thread-safely-in-wpf –
スニペットはこの問題を診断するのにかなり役に立たない。あなたのUIを最小化しないでください。まだ応答はありますか?あなたは、窓を閉じてもいいですか?そうでなければ、MouseDownイベントに応答しません。 –