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