今写一程序,需要对一站点发送web请求,而有可能该站点对这种有所限制。因此需要过一段时间暂停一下然后再继续。操作都在一个线程里,因此我想用获取当前时间分钟数字,能被5整除就挂起一分钟,然后继续。请问怎么解决这个问题?用sleep吗?又怎么唤醒呢。sleep具体写在哪不清楚。还是用别的方法??对于线程操作不是很了解。希望大家出手襄助,多谢
解决方案 »
- combobox绑定为值System.Data.DataRowView?
- list<T>与IList的几个问题
- 请教各位大虾, 怎样使用Type.GetType 获取另一项目下的某个类
- C#+SQL 图片的存取 stream异常
- 如何自行产生Lable?
- 多个控件绑定到一个方法时,如何传递发生事件的对象?
- 如何将数据库中采集出来的数据再加上一列?
- 电脑资料管理多面手(已更新至3.80版,子功能估计有近30项,主要归功于C#的强大功能) ,继续散分
- 这里是减,可运行结果却是加,比如3-1=2 运行结果却为3-1=4,哪位高手指点下,是什么原因呀?
- 参数化查询 '(@iBookName varchar(30),@iAuthor varchar(20),@iPublishment varch' 需要参数 @i
- 博客园新手团队,邀请您的加入
- Tigger & Procedure的執行效能誰更消耗Oracle資源
就是对当前线程暂停100毫秒,你只有一个线程,用此方法即可。
线程Sleep后不用唤醒,时间一到继续执行。
http://blog.csdn.net/Knight94/archive/2006/08/24/1111267.aspx
Thread th = new Thread(sp.GetSource);
th.Start(); if ((System.DateTime.Now.Minute % 5) == 0)
{ MessageBox.Show("wait 65 seconds please.");
Thread.Sleep(65000);
}//是这样写么?还是应该写在sp.GetSource()里?
线程的操作,都应该在run方法内实现....也就是你类sp内的run方法体内.而sp.getsource也应该在run 内调用.
那么你想在哪个位置暂停,在满足暂停条件时用 Thread.Sleep(1000);这里面单位为毫秒。if ((System.DateTime.Now.Minute % 5) == 0)
{
Thread.Sleep(65000);
}这个语句要放到线程里,而且这个线程要是循环的,即每次循环都检查是否分钟数为5的倍数。
而且你要确定你每次循环不会超过1分钟,否则就有可能不会执行暂停语句。
函数名我记不得了,但是感觉那个比较简单明了
th.Start();
暂停事件:
th.Suspend();
继续
th.Resume();
个人认为sleep() 不能满足要求 可以阻塞当前线程,直接用户暂停时的其它线程运行完成,再进行callback
因为你需要暂停当前线程的目的一般来说是要执行其它线程的操作,你不可能为了停而停吧??
如果只是暂停线程好玩,就用sleep() ===============================
http://cache.monocn.com