将 Application.Run() 放在与初始线程不同的线程中是否会产生后果?
Are there consequences to putting Application.Run() in a different Thread than the initial one?
我目前正在尝试将 .NET 通用主机与 WinForms 结合使用,并且正在尝试这样的事情:
var mainmenu = new Thread(() => Application.Run(_mainMenuView as Form));
mainmenu.SetApartmentState(ApartmentState.STA);
mainmenu.Start();
其中 _mainMenuView 是由我从 DI yadayadayada 获得的 MainMenuView Form 实现的接口。
我现在的问题是:
- 这会产生不可预见的后果吗?
- 我需要将线程加入到我的“主”线程吗?
- 如果我关闭窗体,线程会死吗?
- 通过界面获取或设置属性的安全性如何?我需要关心调用吗?
感谢您的帮助
我也一直在试验这个。您可以 运行 在另一个线程上 Application.Run
,
- 我需要将线程加入回我的“主”线程吗?
- 通过界面获取或设置属性的安全性如何?我需要关心调用吗?
如果您想从与 application.run 运行 不同的线程设置任何属性。你应该关心锁定。
- 如果我关闭窗体,线程会死吗?
当您关闭表单时线程将结束。
- 这会产生不可预见的后果吗?
您将面临的一个问题是,Application
class 使用静态 properties/methods。因此,当您尝试创建带有 application.run 的多个线程时,您可能会遇到奇怪的行为。
我目前正在尝试将 .NET 通用主机与 WinForms 结合使用,并且正在尝试这样的事情:
var mainmenu = new Thread(() => Application.Run(_mainMenuView as Form));
mainmenu.SetApartmentState(ApartmentState.STA);
mainmenu.Start();
其中 _mainMenuView 是由我从 DI yadayadayada 获得的 MainMenuView Form 实现的接口。
我现在的问题是:
- 这会产生不可预见的后果吗?
- 我需要将线程加入到我的“主”线程吗?
- 如果我关闭窗体,线程会死吗?
- 通过界面获取或设置属性的安全性如何?我需要关心调用吗?
感谢您的帮助
我也一直在试验这个。您可以 运行 在另一个线程上 Application.Run
,
- 我需要将线程加入回我的“主”线程吗?
- 通过界面获取或设置属性的安全性如何?我需要关心调用吗?
如果您想从与 application.run 运行 不同的线程设置任何属性。你应该关心锁定。
- 如果我关闭窗体,线程会死吗?
当您关闭表单时线程将结束。
- 这会产生不可预见的后果吗?
您将面临的一个问题是,Application
class 使用静态 properties/methods。因此,当您尝试创建带有 application.run 的多个线程时,您可能会遇到奇怪的行为。