线程执行的步骤很多,我想停在某一个点上。用Suspend和Resume来暂停和继续没问题。可是vs提示被否决的。现在改成这样。ManualResetEvent resumeEvent = new ManualResetEvent(false);
        void Pause()
        {
            resumeEvent.Reset();
            paused = true;
        }
        void Resume()
        {
            paused = false;
            resumeEvent.Set();
        }for (int i = 0; i < 10000; i++) 
{
if (paused)
{
resumeEvent.WaitOne();
}
SetTextBoxMethod(textBox1, i.ToString());
System.Threading.Thread.Sleep(1000);
SetTextBoxMethod(textBox1, "bbb");
System.Threading.Thread.Sleep(5000);
SetTextBoxMethod(textBox1, "ccc");
System.Threading.Thread.Sleep(5000);
        。。
}
这样的话只是在一个for循环结束后在开始之前暂停。而我需要想暂停在某一个点上,就像Suspend,我该怎么做。

解决方案 »

  1.   

    加变量控制循环是否继续,比如for()
    {
    if xxxxx {}
    else {}
    }
      

  2.   

    现在的代码就可以暂停,我是想暂停在哪一个具体点上,比如SetTextBoxMethod(textBox1, "bbb");
      

  3.   

    操作的每一步都加你那么一段。一般开发情况下,线程内最小的单位肯定是你的一个操作(差不多就是一句话)否则你就把线程本身引用传到处理函数中,自己调suspand
      

  4.   

    还是使用log吧
    不想折腾vs
      

  5.   

    java 倒好处理一点。
    只能参考 java方法修改了。
      

  6.   

    就是调用Suspend 或者 调用低层的 Suspend实现再有就是 多个方法之间都调用 if (paused) 
      

  7.   

    谢谢楼上的哥们
    就是调用Suspend 或者 调用低层的 Suspend实现??怎么样调用底层的。再有就是 多个方法之间都调用 if (paused) ,是在是太多了。
      

  8.   

    java 倒好处理一点。
    只能参考 java方法修改了。怎么处理???
      

  9.   

    Thread.Resume()”已过时:“Thread.Resume has been deprecated.  Please use other classes in System.Threading, such as Monitor, Mutex, Event
    怎么样用Monitor, Mutex, Event达到立即暂停的效果?不会用啊
      

  10.   

    Monitor, Mutex, Event这些都是必须给插入点才能做到暂停效果,之所以Suspend方法过时,就是因为它不需要插入点,任何时刻都可以暂停,虽然这样是可行的,但是容易出现问题,导致程序出错,这才设置为过时,如果你的线程没有导致程序崩溃的危险,警告无视,用它,否则自己在需要暂停的地方插入信号量等待。