关于C#计时器与thread.sleep的区别 之前在画布上实现一个物体移动用了thread.sleep(),发现有时候速度会变化,就是一卡一卡的感觉,后来用了timer控件就没有这样的问题,这两者之间区别在哪里?timerc# 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 timer中封装了线程,并引入了计时的概念,应该说它是线程的一个拓展应用 原来如此,那为什么用thread.sleep()会出现顿卡的现象?还是说timer控件封装的方法中用了新的技术? 按理说线程也不会卡啊你在线程Sleep前加Application.DoEvents()试试;即:...Application.DoEvents();thread.Sleep();... 你确定是在线程中Sleep的?如果没开线程,使用Threed.Sleep()。Sleep的是主线程,UI是不会响应的,自然会卡 如果Sleep的不是UI线程,应该差不多 那应该怎么区分sleep的是否是主线程? 具体什么在那个线程中执行,要问你自己了。你在主线程调用Sleep,就是Sleep主线程;在子线程中(MSDN上看看Threeding,有个包装好的控件BackgroundWork)执行,就Sleep子线程。估计你多多线程没啥概念,跟你说,也不能理解。先多看看书吧,下个实例,多研究下。多线程应该算.net开发的一个难点吧。 winform那Timer也不是封装线程的,它封装的是Windows消息WM_TIMER 你要确定你Thread.Sleep()是在哪个线程中使用的?如果是在主线程,当然会卡顿!~ 首先要理解线程, 主线程 就是你的主程序.就是你当前运行这个进程. 你在任务管理器结束了,则它必然会销毁.如何区分是否主线程,可以根据线程名称来看. 简单的说就是,主线程只能做一件事,做多了就受不了,就会卡.就像你前面的thread.sleep 它这里只是起到一个休眠的功能,你得把它放到线程里去 这样 就不会卡了 thread.sleep(n)在windows里面,代表的是在接下来的n毫秒内不参与cpu的资源的竞争,这种情况下,就算n毫秒结束了,由于有其他进程占用着cpu的资源,该进程也不会得到cpu的资源。简单的说就是,sleep函数保证进程在n毫秒内一定不会得到cpu的资源,进程的挂起时间是不确定的 关于主从表的显示问题 VARCHART XGantt 怎么应用在c#中 这个题怎么解啊 请问这样的话我怎么样得到随机到的WORD_ID啊 c#怎样实现msn的震动闪屏功能? 在C#里怎么把一个文本框里输入的内容保存成一个文件,同时再上传到FTP服务器啊? C#利用多线程socket访问网络时,只有一个现成能够访问成功? 如何使函数参数不可修改? 随机内容生成????????? 在新建AppDomain中加载程序集的问题 dataGridView多选删除 .NET MVC中使用Telerik
你在线程Sleep前加Application.DoEvents()试试;
即:...
Application.DoEvents();
thread.Sleep();
...
如果没开线程,使用Threed.Sleep()。Sleep的是主线程,UI是不会响应的,自然会卡
如何区分是否主线程,可以根据线程名称来看. 简单的说就是,主线程只能做一件事,做多了就受不了,就会卡.
就像你前面的thread.sleep 它这里只是起到一个休眠的功能,你得把它放到线程里去 这样 就不会卡了