C# 如何完全暂停一个线程,直到另一个线程完成或某个值发生更改

C# 如何完全暂停一个线程,直到另一个线程完成或某个值发生更改,c#,.net,multithreading,winforms,C#,.net,Multithreading,Winforms,使用C#:我有一个类“MsgBox”,一个特殊的消息框,格式化为我的应用程序。它在一个实例上运行,关键是当我调用:“newmsgbox(“messagetext”);”它将暂停调用线程,直到窗体得到响应/关闭或其他任何东西。我尝试在另一个线程上运行表单并使用thread.Suspend()/Resume(),它会将整个计算机冻结两三秒钟,然后工作正常。与Thread.Join()相同。是否有更有效的方法来保持线程?您可以使用该方法在应用程序中显示模式对话框。调用此方法时,它后面的代码直到对话框关

使用C#:我有一个类“MsgBox”,一个特殊的消息框,格式化为我的应用程序。它在一个实例上运行,关键是当我调用:“newmsgbox(“messagetext”);”它将暂停调用线程,直到窗体得到响应/关闭或其他任何东西。我尝试在另一个线程上运行表单并使用thread.Suspend()/Resume(),它会将整个计算机冻结两三秒钟,然后工作正常。与Thread.Join()相同。是否有更有效的方法来保持线程?

您可以使用该方法在应用程序中显示模式对话框。调用此方法时,它后面的代码直到对话框关闭后才会执行


通过将对话框指定给窗体上按钮的DialogResult属性或在代码中设置窗体的DialogResult属性,可以为对话框指定DialogResult枚举的一个值。然后该方法返回该值。可以使用此返回值确定如何处理对话框中发生的操作。例如,如果对话框关闭并返回DialogResult.Cancel值,则通过此方法可以阻止调用ShowDialog后的代码执行。

我同意这篇文章,我认为使用Messagebox与CharithJ和Carsen推荐的模式表单和ShowDialog相比,没有任何优势。我听说过,但我从来没有真正尝试过使用它,只要它停止执行,我想,谢谢你的回答。@Carsen:它肯定会暂停执行,直到关闭弹出窗口为止。它一定对你有用。