- 博客(6)
- 资源 (1)
- 收藏
- 关注
原创 异步线程学习笔记(六) 前台线程和后台线程
在默认情况下,我们手动创建的线程都是前台线程,而只要有前台线程在运行,应用程序就会一直处在活跃的状态,当然,一旦所有前台线程都结束了,即便还有后台线程存在,应用程序也会结束。 此外,我们还要知道,前台线程和后台线程只是线程的状态,和线程的优先级及分配的时间片大小无关。 那么怎么创建和查询一个线程是不是后台线程呢? 我们可以通过IsBackGround属性来判断。 下面看一个例子: static void Main(string[] args) { Thread wor
2020-10-20 20:44:35 202
原创 异步线程学习笔记(五)向线程传递数据和异常处理
的线程委托函数,那么,我们又该怎么向这个函数传递数据呢? 1)最简单的方法是使用lambda表达式,在里面使用参数,调用方法。 static void Main(string[] args) { Thread t = new Thread(() => Print("Hello from t!")); t.Start(); Console.ReadKey(); } st
2020-10-19 19:39:07 326
原创 异步线程学习笔记(四) 线程安全
在学习线程安全之前,我们需要了解两个概念,什么叫做本地和共享。 1)本地独立: CLR会为每个线程分配自己的内存栈,以便使本地变量保持独立。 2)共享: 如果多个线程引用了同一个对象的实例,那么它们就共享了数据。 class ThreadTest { bool _done; static void Main() { ThreadTest tt = new ThreadTest();//创建了一个共同的实例
2020-10-14 20:57:40 220
原创 异步线程学习笔记(三)阻塞
线程阻塞既是: 如果线程执行由于某种原因暂停,则可以认为线程阻塞。 我们常见的线程阻塞有: hread.Sleep和Thread.Join方法 被阻塞的线程的基本操作原理: 被阻塞的线程会立刻将其处理器的时间片转移给其他线程,从此不再消耗处理器的时间,知道阻塞条件被满足。 判断线程是否被阻塞: 我们可以通过Thread.State来判断线程状态,值得一提的是,Thread.State是一个flag enum,可以通过二进制表示线程状态。 十进制数 Thread.State 备注 0 Runn
2020-10-13 20:45:35 336
原创 异步线程学习笔记(二) Join和Sleep
在上一章学习过后,我们肯定希望能控制线程有序,Join和Sleep可以通过阻塞线程成达到这一目的,下面我们开始学习Join和Sleep方法。 Join方法:等待另一个线程完成。 示例如下: namespace JoinANDsleep { class Program { static Thread thread1, thread2; public static void Main(string[] args) { thread1 = new Thread(ThreadProc); thread1.Name
2020-10-09 22:15:39 156
原创 异步线程学习笔记(一) 线程
异步线程学习笔记(一) 线程 作为初学者,关于线程,我们需要了解以下几点: 1、什么是线程 线程实际上就是一个独立的可执行路径,可以独立于其他线程 2、线程和进程的关系 线程依托于进程存在,一个进程可以有多个线程也可以只有一个线程。 并由此衍生出单线程应用和多线程应用。 单线程应用: 在进程中只跑一个线程,所以该线程有独占权。 多进程应用: 在进程中跑多个线程,共享当前的执行环境。 3、如何创建线程 using system.threading;//大多数线程函数的名称空间 Thread t=new T
2020-10-08 22:18:11 190
客户端.zip(c#入门级基础客户端)
2020-07-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人