2010-06-23 60 views
3

我有一個taskBarIcon元素擴展了我的整個UI設計的應用程序上下文。這是因爲應用程序的原始功能是運行後臺進程,並簡單地提供圖標作爲應用程序正在運行的確認。 但是,我現在通過右鍵單擊該圖標可以訪問菜單的形式添加其他功能,並且由於核心功能正在一個線程上運行,並且主線程上的圖標正在運行,所以在訪問圖標在需要顯示通知氣泡的簡單情況下。沒有其他兩個線程可能訪問同一內存的點,所以同步並不是真正的問題。使用擴展應用程序上下文的UI元素調用?

我習慣了Java,其中這個過程非常簡單。我已閱讀了關於C#需要的Invoke-Delegate舞蹈的文章,但沒有一篇文章針對擴展應用程序上下文的對象。我目前的執行情況太不可預測,無法安全生產。

我的問題是:我如何將消息發送到其他進程來顯示通知氣泡,而不會影響菜單的可訪問性?具體來說,一個簡單的例子是用一個UI類將應用程序上下文和一個類擴展到一個調用invoke方法的單獨線程上,這將非常有幫助。

我真的很感謝任何幫助!

badPanda

回答

1

你也可以同樣使用分配給SynchronizationContext.Current您創建的通知氣泡在同一線程上一個SynchronizationContext對象。然後,您會將SynchronizationContext對象傳遞到菜單中的任何組件,並且它將使用context.Send(....)發送消息。或者,如果您有權訪問通知泡泡組件或其表單,則可以執行form.Invoke((MethodInvoker)delegate {....});

相關問題