www.lydf.net > C# ThrEAD.SlEEp小问题

C# ThrEAD.SlEEp小问题

这样肯定是不行的,你这是在UI线程里面运行,Thread.Sleep(1000)就是把UI线程暂停1秒,然后你去更新textBox1的值时又马上进入了下一次循环,textBox1的值还没有来得及更新UI线程又被暂停了,textBox1的值是01但是没有显示出来,当循

是指当前线程.不影响其他的 参考:http://msdn.microsoft.com/zh-cn/library/d00bd51t(v=vs.110).aspx

加个backgroundWorker using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;

应该是执行啦,在你调试的过程中就执行啦,因为你设的时间才一秒钟,可以设长点效果可能明显些,如thread.sleep(3000);

String t = "abc"; label1.Text = t; label1.Update(); //加这行就OK Thread.Sleep(1000); label1.Text = "cba";

正常来说是这个顺序:按键sleep登录想必你也是这么写的吧,但是至于为什么sleep先执行,我想事实情况并不是这样的,关键取决于你是怎么发送的按键,可能你把按键消息发送出去了,但是系统响应需要时间,而此时你程序会继续往下执行,而不会等待按键的完成,因为本身按键函数可能就是没有返回的,而只是发一个消息给系统.然后就会马上执行sleep,sleep时间一过,刚好那边系统响应了你的按键消息,然后就如你所看到的那样了..

你可以为你的程序设置一段时间,通过它做sleep方法的参数,让他休眠一段时间,但是时间到了,他将继续运行而不受你的控制; 好像库里面还有一个方法可以悬挂你的线程,即让他实现你所要的暂停,当你促发某事件的时候他才继续运行,但是我不知道那个方法叫什么,你问问别人吧. 如果你要看程序运行到某处时的情况,可以使用设置断点就可以了,当过了断点是再按f5他将继续执行

可以的,在你想结束线程的地方添加:Thread.CurrentThread.Abort();

这是线程阻塞了,函数没执行完,界面不会改变的.用BackgroundWorker类可以在单独的线程上执行操作.

一楼的有道理.

相关搜索:

网站地图

All rights reserved Powered by www.lydf.net

copyright ©right 2010-2021。
www.lydf.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com