在单独的线程中运行Windows窗体

Nov*_*kov 1 .net multithreading winforms

我正在处理在表单中运行控件,但表单本身对我没有任何价值.我基本上希望表单运行一个任务并返回一个值,但是为了那个我想使用类似AutoResetEvent的东西只有在它完成时从函数调用返回,这显然会阻止表单线程并使其无法实现完成任务.

fra*_*ins 9

我为我的项目做了一次

var frmNewForm = new Form1();
var newThread = new System.Threading.Thread(frmNewFormThread);

newThread.SetApartmentState(System.Threading.ApartmentState.STA);
newThread.Start();
Run Code Online (Sandbox Code Playgroud)

并添加以下方法.你的newThread.Start会调用这个方法.

public void frmNewFormThread()
{
    Application.Run(frmNewForm);
}
Run Code Online (Sandbox Code Playgroud)

  • 这是如何在单独的线程上运行“表单”这个问题的实际答案。 (2认同)