在WPF中,每个调度程序都有自己的线程吗?来自Dispatcher.BeginInvoke
的{{3}}:
在Dispatcher所在的线程上异步执行委托 与。相关联。
我们知道调度程序最多只能与一个线程相关联。两个不同的线程可以共享一个调度程序吗?如果我理解正确,Dispatcher是一个控制消息泵的抽象,即应用程序可以向Dispatcher发送消息,它负责在其线程上执行它们。如果我错了,请纠正我。
答案 0 :(得分:1)
是。但是你必须要了解这样一个事实,即只能有一个UI线程。由于线程和调度程序之间存在一对一的关系,这意味着(一个)UI线程只有一个调度程序。
即。不能与单个调度程序关联的两个线程,因为只有一个UI线程。
答案 1 :(得分:0)
根据MSDN, Dispatcher.CurrentDispatcher;
如果Dispatcher未与当前线程关联,则将创建新的Dispatcher。 FromThread方法不是这种情况。如果没有与指定线程关联的调度程序,则FromThread将返回null。
如果你解释一个线程拥有(或与之关联)一个调度程序的文本,并且两者之间的每个关联都是1-1,因为Thread类中没有Dispatcher的setter。