Thread.sleep()应该放在哪里?

prestashop 2011-08-16 11:52:26

看了不少文章,都说到Thread.sleep(),但是还是不太清楚。

Thread.sleep() 这句应该放在多线程里,还是放在更新界面的主UI线程里?

Thread.sleep(0)是什么意思?

Thread.sleep()本质意思是什么?

谁能解释下?


...全文
14914 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
emailysz 2012-11-06
  • 打赏
  • 举报
回复
想阻塞哪个线程,就放到哪个线程里,如果要阻塞UI线程,可以直接调用Thread.Sleep
  • 打赏
  • 举报
回复
应用进程启动之后,就会启动一个线程(这通常叫做主线程)。然后运行时,假设你编写了多线程程序,或者你引用的类库代码它是多线程的,就会有多线程执行。所以不论你在哪里写sleep,其实都是在线程中,都是阻塞它所在的线程让它僵住不动一会儿。
  • 打赏
  • 举报
回复
MSDN:将当前线程阻塞指定的毫秒数。
你放在哪里(该方法被哪个线程调用),就阻塞哪个线程

  • 打赏
  • 举报
回复
有一点要注意,sleep只会阻塞线程,不会释放线程去干别的,不要望文生义。
LMAOhuaNL 2011-08-17
  • 打赏
  • 举报
回复
就是放在你想让线程休息的地方,比如你打印一些随机数的话,你想让它打印的速率慢一点,这个时候,你就可以在打印那个地方sleep()一下
prestashop 2011-08-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dongxinxi 的回复:]

MSDN:将当前线程阻塞指定的毫秒数。
你放在哪里(该方法被哪个线程调用),就阻塞哪个线程
[/Quote]


 ListViewItem lvi;
for (int i = 0; i < d.Crawlers.Count(); i++)
{
this.listView1.BeginUpdate();
lvi = new ListViewItem();
lvi.Text = "AA";
this.listView1.EndUpdate();

}

Thread.Sleep(50);

}


像以上这情况,是让UI线程阻塞50毫秒吗?

如果以上代码是在多线程的一个委托里,那么这里的 Thread.Sleep(50)是阻塞主线程还是阻塞 多线程?




lovemax14 2011-08-17
  • 打赏
  • 举报
回复
相当于暂停某个线程,暂停时间就是sleep()里面的参数
神炫 2011-08-17
  • 打赏
  • 举报
回复
Thread.sleep()放在哪里都可以。

Thread.sleep(0)是指将执行此代码的线程阻塞0毫秒。

Thread.sleep()就是让执行此代码的线程睡觉去,睡觉的时长由括号内定义的数(单位毫秒)决定,只能自然醒。所以主线程不能长时间睡觉,否则会明显假死。
xin4036 2011-08-17
  • 打赏
  • 举报
回复
System.Threading.Thread.Sleep(int millisecondsTimeout);

millisecondsTimeout:单位ms,也就是 1秒=1000毫秒

若指定零(0)以表示应挂起次线程以使其他等待线程能够执行。指定System.Threading.Timeout.Infinite 以无限期的阻止线程

至于放到什么位置:你就放在本“线程”里面,你需要的地方就可以

你就把他理解为“代码执行到此处,我暂停一段时间,然后再继续执行后面的代码”
神炫 2011-08-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 prestashop 的回复:]
像以上这情况,是让UI线程阻塞50毫秒吗?

如果以上代码是在多线程的一个委托里,那么这里的 Thread.Sleep(50)是阻塞主线程还是阻塞 多线程?
[/Quote]

是阻塞执行此代码的线程50毫秒,如果没有子线程,阻塞的就一定是主线程。
如果在委托里,要看你委托给哪个线程做了,谁做谁被阻塞。
这里的 Thread.Sleep(50)是阻塞主线程还是阻塞子线程要看谁在做这件事。
LIMINLY520 2011-08-17
  • 打赏
  • 举报
回复
sleep 据是一个暂停的语句
它不会去运行其他的程序
等暂停完了才会继续往下执行
ycproc 2011-08-17
  • 打赏
  • 举报
回复
Thread.sleep(0)

休眠

(1000)代表休眠1秒

单位毫秒
bios8086 2011-08-16
  • 打赏
  • 举报
回复
放在你需要 线程 睡觉的地方
bios8086 2011-08-16
  • 打赏
  • 举报
回复
线程挂起!

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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