winforms 如何在专用线程中运行窗体

i2byvkas  于 2023-10-23  发布在  其他
关注(0)|答案(1)|浏览(116)

我正在运行一个命令行应用程序,我想向它添加一个可选的表单,以可视化后台发生的事情。主要是看看是否一切都按预期工作,因为最终产品将链接到另一个程序与它自己的接口。
我的问题是如何做到这一点,而不中断主线程。
当前代码:

var stuff = CreateStuff();

Visualization visualization = new Visualization(stuff); //Visualization is my subclass of Windows.Form
Application.EnableVisualStyles();
Application.Run(visualization);

stuff = UpdateStuff(stuff);

只要应用程序是打开的,最后一行就不会到达,因此我提出了这个问题。
具体来说,我希望可视化在代码运行时继续更新stuff内部发生的事情的可视化。(如果可能的话,甚至在我单步执行代码时也是如此。)

kg7wmglp

kg7wmglp1#

1.将可视化代码移动到一个单独的方法,比如void ShowUI()
1.在后台线程上运行ShowUI:

Thread thread = new Thread(ShowUI);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();

请注意,这个UI线程将不会与您的“主线程”相同。您还需要确保all UI updates run on the UI thread
但不清楚你所说的“链接到另一个程序”是什么意思。理想情况下,您应该让您的测试UI使用与第三方程序相同的API,无论该API是什么。

相关问题