当方法/或函数打开第二个表单时,是否可以打开我的第二个表单 在另一个线程?
我已阅读与此相关的其他主题.. 但似乎我无法弄清楚如何使用调用
这是我如何打开第二张表格 当我打电话给这个..没有什么事情发生..(因为它在第二个线程上)
TimerMode f2 = new TimerMode();
f2.ShowDialog();
请帮帮我。我新手多线程..
答案 0 :(得分:2)
您需要在主窗口线程上执行 请尝试以下方法:
this.Invoke((MethodInvoker)delegate{
TimerMode f2 = new TimerMode();
f2.ShowDialog();
}
这将在正确的线程上创建它。
答案 1 :(得分:0)
应该做点什么。那是因为ShowDialog
将运行自己的消息循环。 TimerMode
表单至少应该是可见的并且正常运行。但是,你是对的,这真的不是最好的做法,特别是如果这个表单将与已经在主UI线程上运行的其他表单进行交互。
以下是您可能会这样做的方式。
anotherForm.Invoke(
(MethodInvoker)(() =>
{
new TimerMode().ShowDialog();
}));
请注意,anotherForm
是对已在主UI线程上托管的其他表单之一的引用。