Thread.Sleep() 诡异现象

wcl1986_1 2009-06-12 08:08:21
我是使用VS2008,C#。在一个项目中,Thread.Sleep(N)又一次在小于17ms时,根本不管用。
这时我同时打开了2个vs。
可是我关闭了另一个vs,迅雷后,计时再次可以小于17ms,当然也不是很准确了,但是比上次不管怎么设置不能小于17ms现象好的多。但是我再现刚才的情形(打开很多软件)情况没有重复出现。在此作为记录,不求回答,欢迎探讨。

我想可能是,有些软件对cpu竞争力强。导致我的程序计时不准确。
...全文
65 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yedaoq 2009-07-10
  • 打赏
  • 举报
回复
用Console.WriteLine输出时间来测试?
awesomeo 2009-07-09
  • 打赏
  • 举报
回复
我说何必呢,Thread.Sleep()本来就不准,睡眠时间与系统延时、各线程优先级等等都有关,你想开点儿吧。
huhuaqiwen 2009-07-09
  • 打赏
  • 举报
回复
wcl1986_1 2009-07-07
  • 打赏
  • 举报
回复
17ms可以的。有时我的机子上还能有2ms左右呢,我也不知怎么回事?
zhujiechang 2009-07-06
  • 打赏
  • 举报
回复
精度不够。17ms太小了,需要自己用API实现,不能以有曾经有3ms的准确来比较,小于它的最小极限数值后都有误差。
wcl1986_1 2009-07-05
  • 打赏
  • 举报
回复
ding
libolei 2009-07-05
  • 打赏
  • 举报
回复
不明白 upupupupupupupup
wcl1986_1 2009-07-03
  • 打赏
  • 举报
回复
不是啊 有时可以sleep(1)是2ms,有时有时15ms
不知怎么的。
我用
int i=0
while(++i<=1000)
{
Thread.sleep(1);
}
console.writeLine(datetime.now);
测试的
newdigitime 2009-06-18
  • 打赏
  • 举报
回复
你的CPU频率太低,无法切出17ms以下的线程块.
wcl1986_1 2009-06-18
  • 打赏
  • 举报
回复
wcl1986_1 2009-06-12
  • 打赏
  • 举报
回复
有的说sleep() 10ms以下 是自欺欺人
但是,我试过几次,是有用的,是可以低于10ms的,只是不准确+-3ms. 因情况而定。

似乎Thread.Sleep 比Timer.interval 精确 网上有2者的比较 他的结果是精确度相似

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧