多线程编程技术

多线程编程技术

ID:40919936

大小:35.00 KB

页数:5页

时间:2019-08-10

多线程编程技术_第1页
多线程编程技术_第2页
多线程编程技术_第3页
多线程编程技术_第4页
多线程编程技术_第5页
资源描述:

《多线程编程技术》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。