日期:2014-05-18  浏览次数:20809 次

关于线程暂停和继续的问题。
线程执行的步骤很多,我想停在某一个点上。用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,我该怎么做。

------解决方案--------------------
加变量控制循环是否继续,比如

for()
{
if xxxxx {}
else {}
}
------解决方案--------------------
操作的每一步都加你那么一段。

一般开发情况下,线程内最小的单位肯定是你的一个操作(差不多就是一句话)

否则你就把线程本身引用传到处理函数中,自己调suspand
------解决方案--------------------

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

------解决方案--------------------
就是调用Suspend 或者 调用低层的 Suspend实现

再有就是 多个方法之间都调用 if (paused)