惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Securelist
O
OpenAI News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threat Research - Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Google Online Security Blog
Google Online Security Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
N
News and Events Feed by Topic
S
Security Affairs
SecWiki News
SecWiki News
Project Zero
Project Zero
L
Lohrmann on Cybersecurity
P
Proofpoint News Feed
P
Palo Alto Networks Blog
L
LINUX DO - 最新话题
H
Hacker News: Front Page
Recent Commits to openclaw:main
Recent Commits to openclaw:main
I
Intezer
Simon Willison's Weblog
Simon Willison's Weblog
W
WeLiveSecurity
T
The Exploit Database - CXSecurity.com
K
Kaspersky official blog
The GitHub Blog
The GitHub Blog
I
InfoQ
云风的 BLOG
云风的 BLOG
雷峰网
雷峰网
B
Blog
IT之家
IT之家
AWS News Blog
AWS News Blog
Jina AI
Jina AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Google DeepMind News
Google DeepMind News
Spread Privacy
Spread Privacy
N
News and Events Feed by Topic
Security Latest
Security Latest
美团技术团队
C
Check Point Blog
WordPress大学
WordPress大学
T
Tenable Blog
S
Security @ Cisco Blogs
Last Week in AI
Last Week in AI
博客园 - 聂微东
月光博客
月光博客
博客园 - 【当耐特】
S
Schneier on Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Secure Thoughts
Schneier on Security
Schneier on Security
C
Cisco Blogs
Cyberwarzone
Cyberwarzone

博客园 - erik168

C#事件的定义与触发[查找] join语法 DataAdpater的Fill研究 关于event的浏览器兼容问题-from佛 - erik168 - 博客园 表驱动法 javascript实现xslt转换xml - erik168 - 博客园 幻方算法 2个JS细节 DOM模型设置属性细节 - erik168 - 博客园 js的Hashtable类(转) - erik168 - 博客园 几个关于javascript的细节 .net的同步 C#开发ActiveX控件 从数据库中查询所有表及所有字段的SQL语句(转) 保存javascript运行状态 解决IE访问域外信息警告对话框弹出 创建XmlHttpRequest - erik168 - 博客园 vi概况 [资料查找结果]一些SHELL要知道的东西 - erik168 - 博客园
.net线程基础知识
erik168 · 2006-11-16 · via 博客园 - erik168

一.线程的创建

需要创建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.访问外部资源(比如由于网络资源受到传输速率限制,对应用程序性能带来不利影响)