Dispatcher.CurrentDispatcher分(System.Windows.Threading分)和Application.Current.Dispatcher分(System.Windows分)有什么区别?

我的直觉告诉我,Application.Current.Dispatcher永远不会改变,并且对于当前应用程序中的所有线程都是全局的,而Dispatcher.CurrentDispatcher可能会创建Dispatcher的新实例,具体取决于调用它的线程.

对吗?

如果是,Dispatcher.CurrentDispatcher的目的主要是为了多线程用户界面吗?

推荐答案

我的直觉告诉我这个申请.现在的调度员永远不会改变

没错.

此外,从非UI线程访问Dispatcher.CurrentDispatcher没有任何意义.除非您调用Dispatcher.Run,否则它不会执行任何操作,并且进入无限消息循环不是您希望从工作线程中执行的操作.

因此:

  • In the most common scenario,在您的应用程序只有一个UI线程的情况下,UI线程中的Application.Current.DispatcherDispatcher.CurrentDispatcher将返回相同的实例.你用哪一个只是个喜好问题.

  • 如果你的应用程序有一个以上的UI线程,那么每DispatcherObject个将被删除

.net相关问答推荐

EF Core IEntityTypeConfigurations:从数据库提取数据后相关对象为空

FileHelpers 未使用正确的日期格式

使用 PostAsJsonAsync C# 时出现错误请求

问:在 Blazor WASM 应用程序中存储 api 密钥的最佳方式是什么?

Owin Twitter登录-根据验证程序远程证书无效

在 .NET C# 中存储加密密钥的最佳方式

C# 有办法给我一个不可变的字典吗?

(C# 7.2)私有保护修饰符的用例是什么?

C# 属性实际上是方法吗?

什么是 Hashtable 的通用版本?

Convert.ToBoolean 和 Boolean.Parse 不接受 0 和 1

关于 Enumerable.Range 与传统 for 循环的 foreach 的思考

C#中的T是什么意思?

如何在 RabbitMQ 中设置重试次数?

是否可以在 XP 上运行 .NET 4.5 应用程序?

错误 NU1605 检测到包降级

如何从其十六进制 RGB 字符串创建 System.Drawing.Color?

如何使用通用扩展方法中的字符串列名在 IQueryable 上应用 OrderBy?

从字节数组中读取 C# 中的 C/C++ 数据 struct

多个列表与 IEnumerable.Intersect() 的交集