Dispatcher.CurrentDispatcher(in System.Windows.Threading)和Application.Current.Dispatcher(in System.Windows)之间有什么区别?
我的直觉告诉我,Application.Current.Dispatcher永远不会改变,并且对当前应用程序中的所有线程都是全局的,同时Dispatcher.CurrentDispatcher可能会Dispatcher根据调用它的线程创建一个新实例.
那是对的吗?
如果是,Dispatcher.CurrentDispatcher主要用于多线程UI 的目的是什么?
我无法让Dispatcher运行委托我在单元测试时传递给它.当我运行程序时,一切正常,但是,在单元测试期间,以下代码将无法运行:
this.Dispatcher.BeginInvoke(new ThreadStart(delegate
{
this.Users.Clear();
foreach (User user in e.Results)
{
this.Users.Add(user);
}
}), DispatcherPriority.Normal, null);
Run Code Online (Sandbox Code Playgroud)
我在我的viewmodel基类中有这个代码来获取Dispatcher:
if (Application.Current != null)
{
this.Dispatcher = Application.Current.Dispatcher;
}
else
{
this.Dispatcher = Dispatcher.CurrentDispatcher;
}
Run Code Online (Sandbox Code Playgroud)
我是否需要做一些事情来初始化Dispatcher进行单元测试?Dispatcher永远不会在委托中运行代码.