首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 暂停线程 [已结贴,结贴人:cyd411]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cyd411
    • 等级:
    发表于:2008-06-26 19:37:06 楼主
    Thread.Sleep(1000)

    在使用这个Sleep的时候,我的程序窗口也死掉了,

    有别的办法能让窗口不死掉吗?

    120  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-26 19:42:271楼 得分:10
    放到辅助线程里。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • 51Crack
    • 等级:
    发表于:2008-06-26 21:57:102楼 得分:10
    可以用now来延时
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • 51Crack
    • 等级:
    发表于:2008-06-26 21:57:333楼 得分:0
    后一个now - 前一个now
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-26 22:55:394楼 得分:10
    51Crack 能不能说具体点
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-27 09:55:505楼 得分:10
    自己做个循环体,循环体之前记录下时间A,你需要等待的时间为B,则循环体的退出条件就是时间超过A+B,注意在循环体中要加Application.DoEvents()
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cyd411
    • 等级:
    发表于:2008-06-30 22:58:076楼 得分:0
    引用 5 楼 yanlongwuhui 的回复:
    自己做个循环体,循环体之前记录下时间A,你需要等待的时间为B,则循环体的退出条件就是时间超过A+B,注意在循环体中要加Application.DoEvents()

    我以前也这样做的,循环,等待时间,你可以看一下这个时候CPU的占用率就知道了

    这个样不行
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cyd411
    • 等级:
    发表于:2008-06-30 22:58:477楼 得分:0
    引用 1 楼 whoami333 的回复:
    放到辅助线程里。


    能具体的说下吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-01 09:04:518楼 得分:10
    用timer也行啊。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-01 09:26:069楼 得分:10
    不要用Thread.Sleep,用Thread.Suspend和Thread.Resume来挂起和恢复,如果要控制暂停时间另用Timer
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-01 09:54:5710楼 得分:10
    引用 9 楼 wood87654321 的回复:
    不要用Thread.Sleep,用Thread.Suspend和Thread.Resume来挂起和恢复,如果要控制暂停时间另用Timer
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-01 12:15:5511楼 得分:0
    引用 6 楼 cyd411 的回复:
    引用 5 楼 yanlongwuhui 的回复:
    自己做个循环体,循环体之前记录下时间A,你需要等待的时间为B,则循环体的退出条件就是时间超过A+B,注意在循环体中要加Application.DoEvents()

    我以前也这样做的,循环,等待时间,你可以看一下这个时候CPU的占用率就知道了

    这个样不行

    你循环体中是不是没加Application.DoEvents(),我试过,CPU的占用率最多才三四十
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-01 12:17:3212楼 得分:10
    引用 9 楼 wood87654321 的回复:
    不要用Thread.Sleep,用Thread.Suspend和Thread.Resume来挂起和恢复,如果要控制暂停时间另用Timer


    有道理,看来,有时候,程序写法与用法还是要多变.....
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cyd411
    • 等级:
    发表于:2008-07-07 23:35:5113楼 得分:0
    最近有点忙没来关注,

    大家说的TIMER这个我只会用他来隔一段时间自动出发一个事件,


    我想实现的是,让我程序暂停执行5秒

    timer怎么写呢?

    请指点
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cyd411
    • 等级:
    发表于:2008-07-08 23:18:2614楼 得分:0
    Application.DoEvents(),

    加入后cpu还是100%

    不过能用谢谢大家
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gyc
    • 等级:
    发表于:2008-07-09 09:41:2315楼 得分:10
    Application.DoEvents(),
    或者 Thread.Sleep(0)

    可以释放当前线程的CPU时间片

    但要是彻底的话,建议使用Thread 单独 实力一个线程,并控制
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mzhao
    • 等级:
    发表于:2008-07-09 11:57:5416楼 得分:10
    用后台线程吧
    Sub Button1_Click(sender as object, e as system.eventargs) handles Button1.Click
    Dim ts as new Threading.Thread(addressof Run)
    ts.start()
    End Sub
    Sub Run()
    '....
    Threading.Thread.Sleep(1000)
    '....
    End sub

    注意如果要操作窗体控件时要使用Delegate加Me.Invoke,保证线程安全。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • vwxyzh
    • 等级:
    发表于:2008-07-09 12:14:5317楼 得分:10
    开后台线程(或利用线程池),然后在后台线程里面Sleep
    或者用Timer,等待Timer的回调
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cyd411
    • 等级:
    发表于:2008-07-10 19:05:1718楼 得分:0
    恩,恩谢谢大家又学了很多方法

    Application.DoEvents()
    加入后可以保证我当前程序不进入假死状态,谢谢

    等等在结帖子,多学学其他方法

    分不够我在加分
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-11 15:27:1819楼 得分:10
    用BackgroundWorker
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved