Проблема
SplashWindow и MainWindow пытались получить доступ к ресурсам, определенным в App.xaml.
В App.xaml.cs была сделана некоторая подготовка и др. загрузка некоторых файлов. Но пока приложение было создано, оно уже пыталось создать экземпляр SplashWindow и MainWindow
public partial class App : Application
{
private readonly SplashWindow splash;
public App() {
splash = new SplashWindow(); // this cannot work, if SplashWindow has a reference to a resource defined in App
this.MainWindow = new MainWindow(); // this cannot work, if MainWindow has a reference to a resource defined in App
}
protected override void OnStartup(StartupEventArgs e) {
base.OnStartup(e);
var splash = new SplashWindow(); // yes, splash was instancied multiple times...
splash.Show();
// do some magic
splash.Close();
MainWindow.Show();
}
}
Создание SplashScreen и MainWindow вызвало исключение, потому что они пытались получить доступ к ресурсам, которые определены в приложении, но приложение не было завершено, поэтому доступ к объекту невозможен.
При попытке восстановить ошибку я создал гораздо более простое приложение, в котором MainWindow и SplashWindow были созданы в App.OnStartup (e), но когда это событие вызывается, объект App существует, поэтому он может работать.
Решение
Удаление поля splash
и не использовать конструктор для создания экземпляров SplashWindow и MainWindow
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e) {
base.OnStartup(e);
var splash = new SplashWindow(); // yes, splash was instancied multiple times...
splash.Show();
// do some magic
this.MainWindow = new MainWindow();
splash.Close();
MainWindow.Show();
}
}
Спасибо всем, кто помог мне обнаружить эту ошибку ...
И отдельное спасибо @Default, который напомнил мне ответить на этот вопрос:)