如何让子线程暂停几秒

xiaoxiaosu2011 2011-06-24 02:41:54
如题

子线程暂停几秒向下执行,但是不能影响主线程
不能用thread.sleep(1000);
...全文
3207 63 打赏 收藏 转发到动态 举报
写回复
用AI写文章
63 条回复
切换为时间正序
请发表友善的回复…
发表回复
pysdxf 2011-10-28
  • 打赏
  • 举报
回复
这个完全可行啊。Thread.sleep()不会阻塞主线程。
laizhiping_rj 2011-08-21
  • 打赏
  • 举报
回复
thread.IsBackground = true;
thread.sleep(n*1000);
Lucky_6Q 2011-08-21
  • 打赏
  • 举报
回复
[Quote=引用 39 楼 playdycc 的回复:]
楼主好像已经找到原因了。

说下理论:
如果是同步启动的子线程,必然会阻塞主线程。
如果是异步启动的子线程,不会阻塞主线程。
[/Quote]有道理
南山行者 2011-08-21
  • 打赏
  • 举报
回复
好像也只有Thread.Sleep()能暂停了啊
auogsy 2011-08-21
  • 打赏
  • 举报
回复
Thread.Sleep()
feixuyue 2011-08-20
  • 打赏
  • 举报
回复
这个最简单了[Quote=引用 7 楼 yanran_hill 的回复:]
AutoResetEvent waiter = new AutoResetEvent(false);
waiter.waitone(1000);
waiter.Close();
[/Quote]
THwudi1990 2011-08-20
  • 打赏
  • 举报
回复
sleep() 是个静态的方法,直接类型. 就出来了
supercpu123 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 xiaoxiaosu2011 的回复:]
引用 13 楼 criedshy 的回复:

引用 12 楼 xiaoxiaosu2011 的回复:

引用 11 楼 criedshy 的回复:

在子线程里加Thread.Sleep(XX);


会影响主线程的


晕,Thread.Sleep()是阻塞当前线程啊,怎么影响到了主线程?


主线程会卡啊
[/Quote]
让我猜猜你的情况
是不是你主线程里定义了个对象,然后这个对象你定义成了全局变量
然后呢,子线程又调用了这个对象里的方法,结果你想在这个方法里休息几秒
这时候不管怎么弄,主线程都被卡住,是不是?
dqdq1023 2011-06-30
  • 打赏
  • 举报
回复
用wait试下吧,如果当前线程进入了同步锁,sleep方法并不会释放锁,即使当前线程使用sleep方法让出了cpu,但其他被同步锁挡住了的线程也无法得到执行。
开发者孙小聪 2011-06-30
  • 打赏
  • 举报
回复
解决了吗饿? 怎么解决的?
goonfighting 2011-06-30
  • 打赏
  • 举报
回复
把什么是线程搞清楚,再来问。
damnhe 2011-06-29
  • 打赏
  • 举报
回复
建议使用信号量来处理线程的暂停或等待,利用计时器来控制时间的长短,
跳出传统的supend,sleep,join方式 ,看一遍System.Thread下面的api,你会有很大收获
孤单北风 2011-06-29
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 xiaoxiaosu2011 的回复:]

汗,我重新说明白一点啊

System.Timer.Timer这个的Elapsed事件里有个
for(int i=0;i<1000;i++)
{
Thread.Sleep(3000);
//这里有执行方法
}

原来的方法是这样的,可是我发现Thread.Sleep(3000)导致主线程假死没反应
[/Quote]

定时器是在主线程运行的,当然会阻塞




zengguoyu 2011-06-29
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 gxttr 的回复:]
引用 14 楼 xiaoxiaosu2011 的回复:

引用 13 楼 criedshy 的回复:

引用 12 楼 xiaoxiaosu2011 的回复:

引用 11 楼 criedshy 的回复:

在子线程里加Thread.Sleep(XX);


会影响主线程的


晕,Thread.Sleep()是阻塞当前线程啊,怎么影响到了主线程?


主线程会卡……
[/Quote]


Thread.Sleep(N*1000) 当前线程阻塞N秒,放在哪个线程里面就阻塞哪个线程
_iorilan 2011-06-29
  • 打赏
  • 举报
回复
线程池来做
心蓝无敌 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 xiaoxiaosu2011 的回复:]

汗,我重新说明白一点啊

System.Timer.Timer这个的Elapsed事件里有个
for(int i=0;i<1000;i++)
{
Thread.Sleep(3000);
//这里有执行方法
}

原来的方法是这样的,可是我发现Thread.Sleep(3000)导致主线程假死没反应
[/Quote]
这个事件是在主线程里面执行,当然会阻塞主线程了。
心蓝无敌 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiaoxiaosu2011 的回复:]

引用 5 楼 flyerwing 的回复:

thread.sleep(n*1000);



这个会阻塞主线程不行

有没有其它办法,比如计算时间差
[/Quote]
不会阻塞主线程的,除非你的code出了问题!
大工在大河南 2011-06-28
  • 打赏
  • 举报
回复
学习了,暂停的这么多方法!
shaofei830927 2011-06-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiaoxiaosu2011 的回复:]
引用 5 楼 flyerwing 的回复:

thread.sleep(n*1000);



这个会阻塞主线程不行

有没有其它办法,比如计算时间差
[/Quote]


在子线程里 写这句话 不会影响(就是你说的阻塞)主线程,主要问题是这个东西不能称之为阻塞
足球中国 2011-06-27
  • 打赏
  • 举报
回复
微软又不是没有提供这个api.

DWORD SuspendThread(HANDLE hThread);
搞winform要了解这些东西。
加载更多回复(39)

110,533

社区成员

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

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

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