读书人

关于线程暂停和继续的有关问题

发布时间: 2012-05-28 17:59:33 作者: rapoo

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

读书人网 >C#

热点推荐