如何使后台线程暂停,然后继续单击按钮?

<p>我有一个Windows窗体和类,在一个不确定的方式运行递归(这意味着它是未知这将递归调用,既可以调用其他)两个简单的方法。现在,还有在一些点递归在此我想暂停执行,并等待用户点击“下一步”按钮。按下按钮后,才应的递归函数继续。类运行在单独的线程,因此不会阻止用户界面 P&gt; </p><p>在此暂停,表单只会检索类的价值,并在列表框中显示。然后按下按钮后,递归继续,直至下暂停()。我需要这使用户可以看到正在发生的事情一步递归一步。还我需要能够把暂停()中的任何地方的递归方法(甚至多次),而不会引起任何副作用... P&gt; </p><p>这在我脑海的唯一方法是调用pause()方法,其中一个循环检查一些锁定标志,然后睡了一段时间(该按钮然后将设置标志),但我有一些不好的经验与主题.Sleep()在Windows窗体(锁定用户界面),所以我期待在另一个选项。 P&gt; </p><p>有没有干净的方式做到这一点? P&gt;
</p>

171 浏览 1 回复
  gt   暂停   递归   线程   方法  

回复

    <p>使用一个 被初始化为,所以它开始设置。在一种方法或其它(或两者)公知的地方,等待事件。大部分时间,事件将被设定成后台线程将立即继续。当用户点击暂停,然而,<em>重置 em&gt;的情况下,使所述后台线程下一次到达事件阻止。当用户下次点击“继续”,<em>设置 em&gt;的情况下,允许后台线程再继续。 P&gt; <p>有没有理由,该UI线程应该永远阻止这种情况。 P&gt; </p><p>使用的AutoResetEvent对象。 P&gt; </p><p>这是你的线程调用它的.WaitOne方法暂停它,并调用。设置方法就可以从你的按钮来取消暂停。 P&gt;
    </p></em></em></p>

    田蓓瑾

相关提问


友情链接: