.net线程基础知识
2006-11-16 12:25
519 查看
一.线程的创建
需要创建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.访问外部资源(比如由于网络资源受到传输速率限制,对应用程序性能带来不利影响)
需要创建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.访问外部资源(比如由于网络资源受到传输速率限制,对应用程序性能带来不利影响)
相关文章推荐
- 复习一下 .Net: delegate(委托)、event(事件) 的基础知识,从头到尾实现事件!
- Java多线程编程总结笔记——一多线程基础知识
- java 线程基础知识
- 黑马程序员-------.NET知识基础(第二天)
- .net 基础知识大杂烩(4) ——数组
- 线程的基础知识
- Linux系统编程——线程基础知识
- .NET简谈互操作(三:基础知识之DllImport特性)
- C#基础知识回顾--线程传参
- 复习一下 .Net: delegate(委托)、event(事件) 的基础知识,从头到尾实现事件!
- 线程的基础知识
- java线程基础知识
- 线程的基础知识
- .net重要的基础知识领悟
- Java基础知识强化102:线程间共享数据
- 线程基础知识学习
- java并发编程(1)--线程基础知识
- java线程基础知识和小案例
- java线程基础知识
- C#和.NET基础知识——学习笔记(三)