使用另一个线程上的方法/函数打开另一个窗体
本文关键字:另一个 函数 窗体 线程 方法 | 更新日期: 2023-09-27 17:56:18
当方法/或函数打开第二个表单时,是否可以打开我的第二个表单在另一个线程上?
我已经阅读了与此相关的其他线程..但似乎我不知道如何使用调用
这是我打开第二个表格的方式当我打电话给这个..什么都没有发生..(因为它在第 2 个线程上)
TimerMode f2 = new TimerMode();
f2.ShowDialog();
请帮助我。 我是多线程的新手..
你需要在主窗口线程上执行请尝试以下操作:
this.Invoke((MethodInvoker)delegate{
TimerMode f2 = new TimerMode();
f2.ShowDialog();
}
这将在正确的线程上创建它。
它应该在做点什么。这是因为ShowDialog
将运行自己的消息循环。TimerMode
形式至少应该是可见的和有效的。但是,你是对的,这确实不是最佳实践,特别是如果此表单将与已在主 UI 线程上运行的其他表单交互。
以下是您可以操作的方法。
anotherForm.Invoke(
(MethodInvoker)(() =>
{
new TimerMode().ShowDialog();
}));
请注意,anotherForm
是对已在主 UI 线程上托管的其他窗体之一的引用。