_sendThread 发送邮件的线程要求:当我发了2分钟时,暂停8分钟。并循环运行下去if (_sendThread.ThreadState == ThreadState.Running)
{
_sendThread.Suspend();
}
Thread.Sleep(480000);
_sendThread.Resume();
当暂停时,form窗体变白了,并且最小化的时候不能还原回来!等到正常发送邮件的时候,又好了!怎么解决!!!!!谢谢了
{
_sendThread.Suspend();
}
Thread.Sleep(480000);
_sendThread.Resume();
当暂停时,form窗体变白了,并且最小化的时候不能还原回来!等到正常发送邮件的时候,又好了!怎么解决!!!!!谢谢了
写在窗体里面,自然就SLEEP了480秒...
可能你指的暂停执行是指的一个特定业务逻辑吧,如果是这样,你可以将它放到一个单独的线程中,然后你就可以通过上面这个函数进行控制了。
Thread th;...
th.Suspend()//暂停
th.Resume()//继续
你是把主线程sleep了,这样主线程sleep480秒,所以会出现你说的那种情况。
如果你的_sendThread会有与窗体关联的参数等等,就要把你处理的事情放到新线程YourThread里边。
窗体里要做的事情就是管理YourThread。这样就不会影响窗体了。
重新定义新的线程,进行sleep
proc = new BrowserProcess(this,_EventThreadStopped,FileListResult,web,Path);
thread = new Thread(proc.AccessMain);//调用子线程方法
thread.Start();
public void AccessMain()
{
threadSize = href.Count / (fMain.threadcount);//计算每个线程要处理的条数
if (threadSize < 1)
{
return;
}
threads = new Thread[fMain.threadcount]; for (int count = 0; count < threads.Length; count++)
{
threads[count] = new Thread(new ParameterizedThreadStart(CreateUrl));
threads[count].IsBackground = true;
threads[count].Start(count);
Thread.Sleep(200);
}
}
如果lz Sleep在窗体线程中,窗体不变白谁变白呢。
应该让主线程调用子线程,子线程单独Sleep,不影响主线程。
Thread.Sleep(480000);我建议写成 Thread.Sleep(8*60*1000);
提高可读性,不用算,一看就是8分钟。