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

时间:2015-11-21 11:53:41

标签: c# wpf multithreading

在WPF中,每个调度程序都有自己的线程吗?来自Dispatcher.BeginInvoke的{​​{3}}:

  

在Dispatcher所在的线程上异步执行委托   与。相关联。

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

2 个答案:

答案 0 :(得分:1)

是。但是你必须要了解这样一个事实,即只能有一个UI线程。由于线程和调度程序之间存在一对一的关系,这意味着(一个)UI线程只有一个调度程序。

即。不能与单个调度程序关联的两个线程,因为只有一个UI线程。

答案 1 :(得分:0)

根据MSDN, Dispatcher.CurrentDispatcher;

  

如果Dispatcher未与当前线程关联,则将创建新的Dispatcher。 FromThread方法不是这种情况。如果没有与指定线程关联的调度程序,则FromThread将返回null。

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