Kor*_*tak 3 c# backgroundworker winforms
我有一个Windows窗体和一个带有两个简单方法的类,这些方法以非确定的方式递归运行(意味着不知道将调用哪个递归,两者都可以调用另一个)...现在,在递归过程中有一些点,我想暂停执行并等待用户点击"下一步"按钮.只有在按下按钮后,递归功能才会继续.该类在单独的线程上运行,因此它不会阻止UI.
在该暂停期间,Form将简单地从类中检索值并将其显示在列表框中.然后在按下按钮后,递归继续,直到下一个Pause().我需要这个,以便用户可以逐步查看递归中发生的情况.此外,我需要能够将Pause()放在递归方法的任何地方(甚至多次),而不会造成任何副作用......
我想到的唯一方法是调用Pause()方法,其中循环检查一些锁定标志然后休眠一段时间(然后按钮会设置标志),但我对Thread.Sleep有一些不好的经历( )在Windows窗体(锁定UI),所以我正在寻找其他选项.
有没有干净的方法来做到这一点?
使用ManualResetEvent初始化为的true,所以它开始设置.在一个方法或另一个方法(或两者)的知名地方,等待事件.大多数情况下,事件将被设置为后台线程将立即继续.但是,当用户单击"暂停"时,请重置事件,导致后台线程在下次到达事件时阻止.当用户下次单击"恢复"时,设置事件,允许后台线程再次继续.
在这种情况下,UI线程没有理由阻止.
| 归档时间: |
|
| 查看次数: |
3530 次 |
| 最近记录: |