本文介绍了如何在C#中暂停和恢复foreach循环?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我需要为winform应用程序制作暂停按钮和恢复按钮。

我发现ManualResetEvent是创建它们的简单方法。

是吗?

我在我的源代码中添加了ManualResetEvent但暂停foreach循环无效。

我缺少什么?

请给我建议

谢谢



Hi,
I need to make pause button and resume button for winform application.
And I found ManualResetEvent is easy way to create them.
Is that right?
I added ManualResetEvent in my source code but pausing the foreach loop is not working.
What am I missing?
Please give me advice
Thank you

static ManualResetEvent mr = new ManualResetEvent(true);


       public Form1()
       {
           InitializeComponent();
       }

       private void btn_start_Click(object sender, EventArgs e)
       {
         Thread  _thread = new Thread(work);
           _thread.Start();

       }
       private void work()
       {
           foreach (TreeNode node in treeview1.Nodes)
           {
                   mr.WaitOne();

                   if (node.Checked)
                   {
                      some code
                   }


           }

       }

       private void btn_pause_Click(object sender, EventArgs e)
       {
           mr.Reset();
       }

       private void btn_resume_Click(object sender, EventArgs e)
       {
           mr.Set();
       }





我的尝试:



我试过把MenaulResetEvent.waitone();在循环结束时。

但仍然没有工作



What I have tried:

I have tried put the MenaulResetEvent.waitone(); at the end of loop.
But still not working

推荐答案


这篇关于如何在C#中暂停和恢复foreach循环?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-28 11:42