【发布时间】:2011-07-01 15:27:39
【问题描述】:
我在我的 C# Winforms 应用程序的单独线程中运行此代码(我的表单名称是 MainForm):
DisplayDownload form2 = new DisplayDownload();
form2.TopMost = true;
form2.Show();
但是当线程启动时,表单永远不会打开。如果我将代码移到我的应用程序的主线程上,它可以正常打开,但如果我将其作为自己的线程启动,则表单永远不会打开。
我尝试使用此帖子中接受的答案:Calling a windows form from another thread (.Net),但我收到此错误:
无法将匿名方法转换为类型“System.Delegate”,因为它不是委托类型
这是我尝试使用的代码:
MainForm.Invoke(delegate {
DisplayDownload form2 = new DisplayDownload();
form2.TopMost = true;
form2.Show();
});
谁能告诉我我做错了什么以及如何让它工作?
【问题讨论】:
-
你应该调用
BeginInvoke(),它不会等待方法完成运行。
标签: c# .net multithreading forms