Инициализация Windows WPF блокирует отдельный поток в .Net 8C#

Место общения программистов C#
Ответить
Anonymous
 Инициализация Windows WPF блокирует отдельный поток в .Net 8

Сообщение Anonymous »

У меня есть следующий код, который я много лет использовал в .Net Framework 4.8 для отображения заставки при запуске:

Код: Выделить всё

      Thread newWindowThread = new Thread(new ThreadStart(() =>
{
WpfSplashScreen splash = new WpfSplashScreen();//Get stuck here!
splash.Show();
Thread.Sleep(3000);
splash.Close();
}));

newWindowThread.SetApartmentState(ApartmentState.STA);
newWindowThread.IsBackground = true;
newWindowThread.Start();

//Loading some things...
Thread.Sleep(4000);
Но после переноса моего проекта на .Net 8 он перестал работать, как раньше. Теперь новый поток, созданный для отображения SplashScreen, зависает при инициализации диалога и продолжается только после завершения основного потока, это приводит к тому, что мой SplashScreen открывается только после завершения всей загрузки.
Пока при отладке, если я войду в «WpfSplashScreen()», я увижу, что поток останавливается на методе «InitializeComponent()».
Я не хочу менять свой SlpashScreen на другой компонент , идея здесь не в этом, я использовал один и тот же подход для открытия других диалоговых окон в их собственных потоках во многих частях моей программы по разным причинам (например, окно индикатора выполнения), и во всех случаях после миграции возникает одна и та же проблема. SplashScreen — это самый простой пример этой проблемы, который у меня есть. Поэтому мне действительно нужно знать, как сделать так, чтобы инициализация диалога Wpf не вывешивала отдельный поток в .Net 8.
Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/782 ... d-in-net-8
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»