欢迎来到天天文库
浏览记录
ID:40919936
大小:35.00 KB
页数:5页
时间:2019-08-10
《多线程编程技术》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第30课多线程编程技术3 2010-08-1320:47:47
2、 分类:Winform学习笔记
3、 标签:timer 线程 text void invoke
4、字号大中小 订阅使用线程操作Windows窗体Timer控件命名空间:System.Windows.Forms属性Enabled设置计时器是否有效Interva计时时间间隔,以毫秒为单位事件Tick达到时间间隔时触发事件方法Start开始计时器Stop关闭计时器使用子线程访问UI-问题与解决方法解决方法1:Control.CheckForIllegalCrossThrea
5、dCalls=false;//检查是否可以跨线程调用解决方法2:Invoke/BeginInvokeControl类的方法原型publicObjectInvoke(Delegatemethod)publicObjectBeginInvoke(Delegatemethod)相同点--目标相同调用委托实例方法,使其在该控件所在的线程上执行调用Invoke前判断是否需要跨线程调用UI举例: if(txtShowTime.InvokeRequired) { //txtShowTime.Invoke(newDelegateUI(showTim
6、e)); txtShowTime.BeginInvoke(newDelegateUI(showTime)); Thread.Sleep(1000);//BeginInvoke } else { txtShowTime.Text=DateTime.Now.ToString(); }测试Invoke内容是否有问题不同点Invoke:同步执行BeginInvoke:异步执行实例:按钮移动实例:时间倒计时使用线程实例:随机小球正确的选择使用.Net中的三个TimerTimer这个类在.net的类库中有3个1)System.
7、Threading.Timer是一个使用回调方法的计时器,而且由线程池线程服务,简单且对资源要求不高。2)System.Windows.Forms.Timer这是一个必须和Windows窗体一起使用的Timer。3)System.Timers.Timer基于服务器计时器功能的Timer,根据服务器系统时间进行运行的Timer。如果需要写WindowsServices的话可以使用这个Timer来进行一些需要在一定间隔时间进行某项操作的环境下使用。它使您能够指定在应用程序中引发Elapsed事件的周期性间隔。然后可以操控此事件以提供定期处理。例如
8、,假设您有一台关键性服务器,必须每周7天、每天24小时都保持运行。可以创建一个使用Timer的服务,以定期检查服务器并确保系统开启并在运行。如果系统不响应,则该服务可以尝试重新启动服务器或通知管理员。基于服务器的Timer是为在多线程环境中用于辅助线程而设计的。服务器计时器可以在线程间移动来处理引发的Elapsed事件,这样就可以比Windows计时器更精确地按时引发事件。 实例:控制台2秒钟输出1次HelloWorld!--->System.Timers.Timer代码:usingSystem;usingSystem.Timers;name
9、spaceTimerTest{ classProgram { staticvoidMain(string[]args) { //Normally,thetimerisdeclaredattheclasslevel,so //thatitdoesn'tgooutofscopewhenthemethodends. //Inthisexample,thetimerisneededonlywhileMain //isexecuting.Ho
10、wever,KeepAlivemustbeusedatthe //endofMain,topreventtheJITcompilerfromallowing //aggressivegarbagecollectiontooccurbeforeMain //ends. TimeraTimer=newTimer(); //HookuptheElapsedeventforthetimer. aTimer.Elapsed+=newE
11、lapsedEventHandler(OnTimedEvent); //SettheIntervalto2seconds(2000millise
此文档下载收益归作者所有