簡體   English   中英

NotifyIcon的ContextMenu有時不起作用

[英]NotifyIcon's ContextMenu not working sometimes

我正在開發一個在后台運行的Windows應用程序(用於長時間運行的進程)。

應用程序通過NotifyIcon工具提示顯示過程狀態。

我在NotifyIcon工具提示控件中添加了ContextMenu控件。 每當應用程序空閑(沒有做任何工作)時,上下文菜單工作正常,但在進程運行期間,上下文菜單會掛起。

所有進程都在不同的線程中運行。 任何人都可以告訴我如何為長時間運行的后台進程制作流暢的上下文菜單?

完全相同的規則適用於具有NotifyIcon作為使用Window或Form來顯示用戶界面的程序的程序。 NotifyIcon將通知發送到進程的主線程,即您在其上調用Application.Run()的進程。 如果那個主線程忙於其他任務,比如“運行一個進程”,那么NotifyIcon會變成緊張性的。 它正在嘗試發送通知但是您的主線程沒有正在偵聽,因為它正在忙於執行該“進程”。

而且你必須以與常規gui程序完全相同的方式解決這個問題,你必須在工作線程上運行處理代碼。 使用標准.NET解決方案,如BackgroundWorker,Task或async / await關鍵字。 或者使用Thread或ThreadPool旋轉自己的。

如果您已經這樣做了,那么問題就不清楚了,那么請注意一個太經常調用ReportProgress的BackgroundWorker,但仍然會讓主線程陷入困境。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM