Ich habe viele Post über Application.Current.Dispacher
gelesen Null als Einheitstests gelesen. Welches ist das genaue Problem, das ich habe. Ich habe This gefunden, was genau ich suche. Jedoch scheint es, dass wenn ich gehe, um dies zu implementieren, ich nicht kompilieren kann. Mit dem Fehler von:Unit Testing mit Application.Current.Dispatcher
Zugriff auf privaten Konstruktor 'Dispatcher' hier nicht möglich.
In dem obigen Post geben Sie an, dass es viele Möglichkeiten gibt, den Code zu implementieren, den ich unten habe. Da er nicht auf Multithreading-Sicherheitschecks geprüft hat. Wie kann ich diese Überprüfungen durchführen und diese kompilieren lassen?
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; }
}
danke, also sollte ich nicht die rootdispacher Klasse erstellen? – JamTay317
Dispatcher.CurrentDispatcher gibt eine neue Dispatcher-Instanz zurück, wenn dem aktuellen Thread noch keine angefügt ist. So sollte es für Unit-Testszenarien sicher sein. Wenn Sie diesen Code in Produktion und Test haben, müssen Sie unterscheiden. – LoekD