停止方法并等待用户输入

时间:2010-11-16 19:39:16

标签: c# wpf multithreading wpf-4.0

我的程序是用C#编写的,并且在WPF中有一个GUI。单击一个按钮时,将调用方法StopAndGo()

问题是我希望此方法在某些点停止,等待用户输入,然后继续。

我想这可以通过多线程来完成,但由于我从未研究过这个主题,我想确保它可以完成,并且在研究它之前是否很难完成。

你能否就需要做什么给我一些指导?

感谢。

5 个答案:

答案 0 :(得分:3)

首先,我不认为多线程是这里的方式。如果希望方法在某些点停止,则应对其进行编码,以显示弹出框,文本框或任何其他区域以接收输入。所以你需要多种方法来处理这个问题,在main方法中你可以调用其他方法来创建这些等待点。

答案 1 :(得分:3)

答案 2 :(得分:0)

使用ManualResetEvent类。启动一个执行StopAndGo()的线程;在该线程调用的上下文内部

 this.manualResetEvent.WaitOne(TimeSpan.Infinite,false);

当您的用户完成输入后,请致电

this.manualResetEvent.Set();

将让其他线程知道继续使用stopANdgo

答案 3 :(得分:0)

当您的方法具有背景特性时,使用多线程的原因,并且您不希望在该方法执行时锁定UI。

对于等待场景,您可能需要使用同步对象,例如ManualResetEvent

答案 4 :(得分:0)

如果您的代码无法在没有用户输入的情况下继续进行,则模态对话框是避免多个线程的好方法。

DialogBox dialogBox = new DialogBox();

// Show window modally 
// NOTE: Returns only when window is closed
Nullable<bool> dialogResult = dialogBox.ShowDialog();

来自https://msdn.microsoft.com/en-us/library/system.windows.window.showdialog(v=vs.110).aspx