Обычно метод точки входа для потоков для WPF имеет значение [STAThreadAttribute]
, установленное для ThreadMethod
, или состояние квартиры установлено на STA при создании потока с помощью Thread.SetApartmentState()
. Однако это может быть установлено только до начала потока.
Если вы не можете применить этот атрибут к точке входа потока, из которого вы выполняете эту задачу, попробуйте следующее:
void Installer1_AfterInstall(object sender, InstallEventArgs e)
{
var thread = new Thread(new ThreadStart(DisplayFormThread));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
}
private void DisplayFormThread()
{
try
{
MainWindow ObjMain = new MainWindow();
ObjMain.Show();
ObjMain.Closed += (s, e) => System.Windows.Threading.Dispatcher.ExitAllFrames();
System.Windows.Threading.Dispatcher.Run();
}
catch (Exception ex)
{
Log.Write(ex);
}
}