我有一个 taskBarIcon 元素扩展了我的整个 UI 设计的应用程序上下文。这是因为该应用程序的原始功能是运行后台进程并简单地提供图标作为应用程序正在运行的确认。 但是,我现在以菜单的形式添加额外的功能,可以通过右键单击图标来访问,并且由于核心功能在一个线程上运行,而主线程上的图标,我在访问图标时遇到了问题在需要显示通知气泡的简单情况下。没有其他点可以让两个线程访问同一内存,因此同步并不是真正的问题。
我用惯了Java,这个过程简单多了。我已经阅读了我能找到的关于 C# 需要的调用委托(delegate)舞蹈的文章,但没有一篇文章是特定于扩展应用程序上下文的对象的。我当前的实现太难以预测,无法保证生产安全。
我的问题是:如何将消息发送到其他进程以显示通知气泡,而不影响菜单的可访问性?具体来说,一个包含扩展应用程序上下文的 UI 类和调用 invoke 方法的单独线程上的类的简单示例将非常有帮助。
非常感谢任何帮助!
坏 Pandas
最佳答案
您也可以在创建通知气泡的同一线程上使用分配给 SynchronizationContext.Current
的 SynchronizationContext
对象。然后,您可以将 SynchronizationContext
对象传递到菜单所在的任何组件,它会使用 context.Send(....)
发送消息。或者,如果您有权访问通知气泡组件或它所在的表单,您可以执行 form.Invoke((MethodInvoker)delegate {....});
关于c# - 将 Invoke 与扩展应用程序上下文的 UI 元素一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3102979/