我已经阅读了许多关于Application.Current.Dispacher
在单元测试时为null的文章。这是我的确切问题。我发现This这正是我正在寻找的。但是,似乎当我去实现这个我不能编译。出现以下错误:使用Application.Current.Dispatcher进行单元测试
无法在此处访问私有构造函数'Dispatcher'。
在上面的文章中,他们声明有很多方法来实现我下面的代码。因为他没有检查多线程安全检查。我怎样才能做这些检查,并得到这个编译?
public static Dispatcher RootDispatcher
{
get
{
if (_rootDispatcher == null)
{
if (Application.Current != null)
{
_rootDispatcher = Application.Current.Dispatcher;
}
else
{
var thread = Thread.CurrentThread;
_rootDispatcher = new Dispatcher(thread);
}
}
return _rootDispatcher;
}
internal set { _rootDispatcher = value; }
}
谢谢,那么我应该不创建rootdispacher类? – JamTay317
Dispatcher.CurrentDispatcher将返回一个新的Dispatcher实例,如果当前线程没有附加到它的话。 因此它应该是安全的单元测试场景。 如果您在生产和测试中都有此代码,则需要进行区分。 – LoekD