C#论坛-玄机论坛-C#论坛-玄机宝盒-玄机类库-C#

 找回密码
 关闭注册

QQ登录

只需一步,快速开始

查看: 5803|回复: 9

[已解决] C#除了thread.sleep()的延时方法,还有什么?

[复制链接]
小哲 发表于 2016-8-9 17:24:08 | 显示全部楼层 |阅读模式
1紫晶
本帖最后由 小哲 于 2016-8-9 17:25 编辑

大佬们 小弟我需要一个线程延时功能,别的线程不受影响正常工作,Thread.sleep(50); 这个会让所有线程延时。。。。

我大约执行完一个方法后要延时大约20s在执行下一函数

比如[mw_shl_code=csharp,true]MessageBox.Show("Test");
delay(20);
MessageBox.Show("Test");[/mw_shl_code]


别跟我说执行做个循环for(I++)当延时函数就行了,多谢各位大神~


最佳答案

查看完整内容

直接把所有代码都放在线程里执行 中间用Thread.sleep就不会卡界面了 比如[mw_shl_code=csharp,true] Task.Factory.StartNew(() => { ................ }); 或者 ThreadPool.QueueUserWorkItem(s => { ......... });[/mw_shl_code]
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

luohe0395 发表于 2016-8-9 17:24:09 | 显示全部楼层
直接把所有代码都放在线程里执行
中间用Thread.sleep就不会卡界面了
比如[mw_shl_code=csharp,true]            Task.Factory.StartNew(() =>
            {
                   ................
            });
或者
            ThreadPool.QueueUserWorkItem(s => {
                  .........
            });[/mw_shl_code]
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

十一月的肖邦 发表于 2016-8-10 11:01:33 | 显示全部楼层
thread.sleep不是休眠所有线程,只对当前线程有效,另外延时20S执行下个函数这个可以用有限状态机实现,不阻塞主线程,也就是不卡UI了。
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

十一月的肖邦 发表于 2016-8-10 11:01:49 | 显示全部楼层
thread.sleep不是休眠所有线程,只对当前线程有效,另外延时20S执行下个函数这个可以用有限状态机实现,不阻塞主线程,也就是不卡UI了。
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

 楼主| 小哲 发表于 2016-8-10 14:56:10 | 显示全部楼层
luohe0395 发表于 2016-8-10 10:44
直接把所有代码都放在线程里执行
中间用Thread.sleep就不会卡界面了
比如[mw_shl_code=csharp,true]        ...

我用定时器解决了 是不是有点傻
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

我是MT 发表于 2016-8-15 09:20:32 | 显示全部楼层
小哲 发表于 2016-8-10 14:56
我用定时器解决了 是不是有点傻

编程都是非常灵活的,定时器貌似也是可以的。
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

luohe0395 发表于 2016-8-16 10:47:08 | 显示全部楼层
小哲 发表于 2016-8-10 14:56
我用定时器解决了 是不是有点傻

我等菜鸟能实现功能就是成功!不管用啥实现的...
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

BinGoo 发表于 2016-9-2 18:16:40 | 显示全部楼层
用线程池ThreadPool
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

eddieiat 发表于 2016-9-11 20:38:58 | 显示全部楼层
也可以使用 await Task.Delay(20);
https://msdn.microsoft.com/en-us/library/system.threading.tasks.task.delay%28v=vs.110%29.aspx
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

lyx 发表于 2018-4-17 11:59:14 | 显示全部楼层
Task.Factory.StartNew(() =>
            {
                MessageBox.Show("Test");
                System.Threading.Thread.Sleep(50);
                MessageBox.Show("Test");
            });
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 关闭注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

QQ|玄机论坛

GMT+8, 2024-4-19 17:20 , Processed in 0.172275 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表