3

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

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

我想这可以通过多线程来完成,但是由于我从未研究过该主题,因此我想在研究之前确定它可以完成,以及是否难以完成。

你能给我一些关于需要做什么的指导吗?

谢谢。

4

5 回答 5

3

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

于 2010-11-16T19:42:07.150 回答
0

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

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

当您的用户完成输入后,调用

this.manualResetEvent.Set();

这将使另一个线程知道继续 stopANDgo

于 2010-11-16T19:46:28.137 回答
0

当您的方法具有后台性质并且您不想在该方法执行时锁定 UI 时使用多线程的原因。

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

于 2010-11-16T19:50:15.727 回答
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

于 2015-06-12T11:02:03.220 回答