Обратите внимание, что код C # (и его эквиваленты в VB.NET) будут пропускать поток. Он запускает диспетчер, вызывая Run, но никогда не выключает его.
Очевидно, это предполагает, что вы действительно запускаете поток в какой-то момент, чего не делает ни один пример. Вам понадобится следующий код, чтобы остальные могли быть полезны:
thread.SetApartmentState(ApartmentState.STA)
thread.Start()
В любом коде, который пытается закрыть экран-заставку, вам понадобится что-то, что захватит диспетчер и отключит его. Например, ваша MySplashForm может иметь это:
Public Sub ShutdownSplashThread()
Dispatcher.BeginInvokeShutdown(DispatcherPriority.Normal)
End Sub
Это позволит корректно завершить работу потока, в котором находится форма-заставка. (И это также будет иметь побочный эффект закрытия формы, так что вам не нужно это делать.)