迷你5207专属论坛

注册

 

发新话题 回复该主题

[DotNet] C#线程的详细中文说明 [复制链接]

发表者
一.线程的创建 需要创建2个对象Thread&ThreadStart: ThreadStart ts=new ThreadStart(要执行的方法); Thread t=new Thread(ts); (ThreadStart代表一个委托,只接受方法名称) 二.Thread基本方法: Start:将线程状态改为 Running Abort:调用此方法后,在当前的线程上引发 ThreadAbortException,该异常终止此线程的过程。调用此方法通常会终止线程。 Interrupt:该方法打断一个处于WaitSleepJoin状态的线程。调用Abort结束线程的方法将使该线程执行完Finally语句就结束,而调用Interrupt方法则允许线程执行完整个线程体后结束。 Join:暂停调用自身线程直到指定线程终止。 Resume:恢复挂起的线程。 Suspend:无限期挂起线程,除非另外线程唤醒它。若已经挂起则不起作用。 Sleep:时钟中断。 三.线程优先级:(ThreadPriority) 枚举类型,包括Highest,AboveNormal,Normal,BelowNormal,Lowest 四.线程状态:(ThreadState) Aborted:线程处于停止状态,但不一定执行完毕 AbortRequested:Abort方法已经调用,但线程还没有收到 System.Threading.Threadexception. Background:线程在后台执行 Running:线程正在执行 Stopped:线程完成所有指令并停止 StopRequested:线程请求停止状态 Suspended:线程处于挂起状态 SuspendRequested:线程处于挂起请求状态 Unstarted:线程未调用Start方法 WaitSleepJoin:线程通过调用Wait(),Sleep() orJoin()来暂停线程。 五.唤醒线程: 在线程睡眠状态时,若想在到达指定时间之前唤醒线程,只能使用Interrupt(). 六.关于主线程与界面更新线程两个线程操作界面的解决办法: 原理:使用委托 public delegate void UpdateData(string val); 更新界面方法独立出来: void 方法名{/*控件更新代码*/} 在界面更新线程执行的方法中,如此: UpdataData ud=new UpdataData(更新界面的方法名); this.Invoke(ud,传递参数集); 七.连接线程: 许多资料对join的介绍都不甚清晰。如:暂停调用线程直到线程终止。这话我一看我就SB了。 所以,我改了一下,应该是暂停自身线程调用直到指定线程终止。 E.G. 2个线程,first&second first=new Thread(new ThreadStart(fitstMethod)); second=new Thread(new ThreadStart(secondMethod)); first.Start(); second.Start (); 当secondMethod方法开头包括first.Join()的时候,就会在first线程执行完毕后,再执行调用 secondMethod方法的线程second. 八.线程的使用时机: 1.后台进程(比如为了防止操作界面挂掉让人不爽) 2.访问外部资源(比如由于网络资源受到传输速率限制,对应用程序性能带来不利影响) 来源:http://www.cnblogs.com/erik168/archive/2006/11/16/562349.html
分享 转发
相信与不相信都是矛盾的.  5207宣!欢迎您来到点滴论坛
TOP
发新话题 回复该主题