gpt4 book ai didi

c# - 从不引用 UI 控件的单独线程调用 UI 方法

转载 作者:行者123 更新时间:2023-11-30 19:44:47 26 4
gpt4 key购买 nike

我有一个公开公共(public)事件的类。 GUI 上有各种控件可以将其事件处理程序注册到此事件以更改控件,例如文本或背景颜色等。但是,公开事件的类不保留那些可能具有的 UI 控件的任何引用添加了他们的事件处理程序。

在执行期间,一个单独的前台线程执行一个方法,该方法将调用(触发)公共(public)事件。这将调用已注册到该事件的事件处理程序。

问题是事件处理程序是在前台线程而不是 UI 线程上调用的。如何在不引用 UI 控件的情况下编码对 UI 线程的调用?

最佳答案

您需要决定执行编码的内容:事件引发器或事件处理程序。如果您不希望事件引发者了解有关线程的任何信息 - 例如通过ISynchronizeInvokeSynchronizationContext - 然后让事件处理程序执行编码。

基本上,事件引发者应该保证它会引发特定上下文中的所有事件(可以在构造时通过 SynchronizationContext 给它)或者它应该明确它是 这样做,并将责任推给处理程序。后者是更灵活的方法 - 这意味着如果您有多个具有不同需求的处理程序,每个处理程序都可以根据自己的需要做适当的事情。

关于c# - 从不引用 UI 控件的单独线程调用 UI 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11814859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com