将Application.Run()放在与初始线程不同的线程中是否有后果?



我目前正在尝试在。net通用主机的东西与WinForms相结合,我正在尝试这样的东西:

var mainmenu = new Thread(() => Application.Run(_mainMenuView as Form));
mainmenu.SetApartmentState(ApartmentState.STA);
mainmenu.Start();

与_mainMenuView是由MainMenuView表单实现的接口,我从DI yadayadayada。

我现在的问题是:

  • 这是否有不可预见的后果?
  • 我需要将线程连接回我的"主"的线程吗?
  • 线程死亡,如果我只是关闭窗体?
  • 通过接口获取或设置属性有多安全?我需要关心调用吗?

谢谢你的帮助

我也一直在尝试这个。您可以在另一个线程上运行Application.Run

  • 我是否需要将线程连接回我的"主"的线程吗?
  • 通过接口获取或设置属性有多安全?我需要关心调用吗?

如果你想从一个与application.run运行的线程不同的线程中设置任何属性。你应该关心一下锁。

  • 线程死亡,如果我只是关闭窗体?

线程将完成当你关闭表单。

  • 这是否有不可预见的后果?

您将面临的一个问题是,Application类使用静态属性/方法。所以当你试图在application.run上创建多个线程时,你可能会得到奇怪的行为。

最新更新