C#ShowDialog()不';从线程触发时,t块主窗体

C#ShowDialog()不';从线程触发时,t块主窗体,c#,multithreading,winforms,C#,Multithreading,Winforms,我有一个Windows窗体应用程序,它有一个主窗体和几个后台线程。为了显示“漂亮”的消息,我使用ShowDialog()实现了一个表单,以模态对话框的形式显示 对ShowDialog()的所有调用都在主窗体的窗体级别上实现(而不是在线程级别),但有时我会从线程触发一个事件,该事件将在主窗体的窗体级别上处理。在这些情况下,对话框不再是模态的。。。主窗体未被阻止。当对ShowDialog()的调用不是从线程触发时,它将根据需要处于模式 如何确保每次调用ShowDialog()都会阻止主窗体 如何确保

我有一个Windows窗体应用程序,它有一个主窗体和几个后台线程。为了显示“漂亮”的消息,我使用
ShowDialog()
实现了一个表单,以模态对话框的形式显示

ShowDialog()
的所有调用都在主窗体的窗体级别上实现(而不是在线程级别),但有时我会从线程触发一个事件,该事件将在主窗体的窗体级别上处理。在这些情况下,对话框不再是模态的。。。主窗体未被阻止。当对
ShowDialog()
的调用不是从线程触发时,它将根据需要处于模式

如何确保每次调用ShowDialog()都会阻止主窗体

如何确保每次调用
ShowDialog()
都会阻止主窗体

在主线程上执行对ShowDialog()的调用。如果需要从其他线程调用它们,请使用
invoke()
在主线程上运行它们

如何确保每次调用
ShowDialog()
都会阻止主窗体


在主线程上执行对ShowDialog()的调用。如果您需要从不同的线程调用它们,请使用
invoke()
在主线程上运行它们。

您能举一个例子说明如何使用
invoke()
而不是
ShowDialog()
@devnull69 Google可以给您提供数十万个如何使用
invoke
的示例。例如:好的,谢谢大家,我想我明白了。简单地从线程内部使用
handler.Invoke(…)
而不是
handler(…)
,高代表性用户的技巧就是给出这样的答案“google来查找示例”。你能举个例子说明如何使用
Invoke()
而不是
ShowDialog()
@devnull69谷歌可以给你数十万个例子说明如何使用
Invoke
。例如:好的,谢谢大家,我想我明白了。简单地从线程内部使用
handler.Invoke(…)
而不是
handler(…)
,高代表性用户的技巧就是给出这样的答案“google来查找示例”。或链接到“代码腐烂”页面。