C# 每个UI线程都有自己的调度程序吗?

C# 每个UI线程都有自己的调度程序吗?,c#,wpf,multithreading,C#,Wpf,Multithreading,在WPF中,是否每个调度程序都有自己的线程?从Dispatcher.BeginInvoke的 在调度程序所在的线程上异步执行委托 与…有关 我们知道调度程序最多只能关联一个线程。两个不同的线程可以共享一个调度程序吗?如果我理解正确,Dispatcher是一个控制消息泵的抽象,即应用程序可以向Dispatcher发送消息,并负责在其线程上执行这些消息。如果我错了,请纠正我。根据 如果调度程序未与当前线程关联,则将创建一个新的调度程序。FromThread方法并非如此。如果没有与指定线程关联的调度程

在WPF中,是否每个调度程序都有自己的线程?从Dispatcher.BeginInvoke的

在调度程序所在的线程上异步执行委托 与…有关

我们知道调度程序最多只能关联一个线程。两个不同的线程可以共享一个调度程序吗?如果我理解正确,Dispatcher是一个控制消息泵的抽象,即应用程序可以向Dispatcher发送消息,并负责在其线程上执行这些消息。如果我错了,请纠正我。

根据

如果调度程序未与当前线程关联,则将创建一个新的调度程序。FromThread方法并非如此。如果没有与指定线程关联的调度程序,则FromThread将返回null


如果您解释一个线程拥有(或与之关联)一个调度程序的文本,并且两个调度程序之间的每个关联都是1-1,因为Thread类中没有调度程序的setter。

是。但是,您必须了解这样一个事实,即可以而且始终只有一个UI线程。由于线程和调度程序之间存在一对一的关系,这意味着(一个)UI线程只有一个调度程序


也就是说,不能有两个线程与单个调度程序关联,因为只有一个UI线程。

线程和调度程序之间存在一对一的关系。也就是说,多个线程可以在UI线程调度程序上对工作进行排队(例如,在WPF中使用
Application.Current.dispatcher
)。如果您想从工作线程与UI元素交互,实际上必须这样做。