gpt4 book ai didi

c# - 当主线程终止时 SynchronizationContext 会发生什么?

转载 作者:行者123 更新时间:2023-11-30 16:18:37 27 4
gpt4 key购买 nike

我有两个线程,一个是主线程,另一个是我创建的线程来做一些工作。我不明白当我从另一个线程调用 originalContext.Post(主线程的 SyncronizationContext)时会发生什么,当主线程已经终止时,更新了一些 UI 元素?这安全吗?为什么?

提前致谢。

最佳答案

这当然不会有好结果。这取决于实际的同步提供者,不止一个。尝试将重点放在常见的 WindowsFormsSynchronizationContext 和 WpfSynchronizationContext 上。两者都会从队列中清除所有待处理的帖子,它们会消失得无影无踪。如果您继续发帖,Winforms 将抛出 InvalidOperationException。 Wpf 比较复杂,它可以设置 DispatcherOperation.Status 字段来指示它没有工作。但据我所知,这个字段没有被上下文代码观察到,所以它应该静静地落在位桶中。

显然,您永远不希望这种情况发生。简单的解决方法是 Thread.IsBackground = true 让 CLR 清理困惑,让程序在没有 UI 的情况下继续运行通常是不可取的。

关于c# - 当主线程终止时 SynchronizationContext 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15991847/

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