![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#异步编程
什么是异步编程,如何使用?
shunjianyj
不学习还能干嘛呢?
展开
-
Thread线程6前台线程和后台线程
默认状态下手动创建线程都是前台线程 只要有前台线程在运行,那么程序会一直处于活跃状态. 但是后台线程却不行,一旦所有前台线程停止,那么应用程序就停止了,任何后台线程也会突然终止注意:前台、后台状态与他的优先级无关(优先级是指所分配的执行时间)static void Main(string args)Thread thre=new Thread(()=>Console.ReadKey)if(args.Lenght>0){thre.Isbackground=true;}.原创 2021-08-15 09:31:22 · 307 阅读 · 0 评论 -
Thread线程5.向线程中传递参数
如果想向线程中传递参数的话最简单的方法就是使用Lambda表达式,在里面使用参数调用方法new Thread(() => print("张三")).Start();甚至可以把整个逻辑都放到lambda中new Thread(() =>{ Console.WriteLine("我是张三"); Console.WriteLine("我是李四");}).Start();在C#3.0之前没有lambda表达式.可以使用Thread的Start()方法来传递参数使用这种方原创 2021-08-02 16:40:04 · 1717 阅读 · 0 评论 -
Thread线程4.线程间共享数据线程安全
本地状态和共享状态(Local And Shared State)(1)Local本地独立CLR为每个线程分配自己的内存栈(Stack)以便使本地变量保持独立示例:static void Main(string[] args){new Thread(Go).Start();//在新线程上调用Go()Go();//在主线程中调用Go()}static void Go(){ //i是本地变量 //在每个线程的内存栈上,都会创建i独立副本 for (int i = 0;.原创 2021-08-02 16:34:49 · 207 阅读 · 0 评论 -
Thread线程3.线程阻塞
什么是线程阻塞(1)如果线程因为某种原因导致暂停,那么就认为该线程被阻塞了例如:使用Thread.Sleep()或者Join方法(2)被阻塞的线程会立即将其处理器的时间片生成给其他线程,从此就不在消耗处理器时间,知道满足阻塞条件后,处理器重新为线程分配时间片可以通过ThreadState这个属性来判断线程是否处于被阻塞状态 bool block =(Thread.ThreadState&ThreadState.WaitSeelpJoin)!=0//如果为true则为阻塞状态Thr.原创 2021-08-02 16:17:09 · 1181 阅读 · 0 评论 -
Thread线程2.Sleep和Join
1.Thread.Sleep()该方法会使线程暂停指定时间后再继续运行2.Thread.join()该方法使其他线程等待此线程终止为止 static Thread t1, t2; static TimeSpan timespan = new TimeSpan(0, 0, 1); //注意: //Thread.Sleep(0)这样调用会使线程立即放弃当前时间片,并将CPU转交给其他线程 //Thread.Yieid()做同样的事情,但它原创 2021-08-02 15:58:17 · 117 阅读 · 0 评论 -
Thread线程1.线程介绍
什么是线程?(1)线程就是一个可执行路径,他可以独立于其他线程运行(2)每个线程都在操作系统的进程(Process)内执行,而操作系统进程提供了程序运行的独立环境.单线程应用,在进程的独立环境中只跑一个线程,所以该线程拥有独占权多线程应用,当个进程中会跑多个线程,他们会共享当前的执行环境(尤其是内存)例如:一个线程在后台读取数据,一个线程在数据到达后进行展示这个数据就被称为共享的状态线程在单核处理器和多核处理器上的区别:(1)在单核处理器上操作系统必须为每个线程分配"时间片"(在wi..原创 2021-08-02 15:49:07 · 152 阅读 · 0 评论