首页 > 技术文章 > c# 多线程直接退出不运行 所有线程执行后执行主线程

yangchas 2020-07-13 11:31 原文

main下定义了两个线程,运行时,两个线程都不执行,直接退出

Thread t1 = new Thread(new ParameterizedThreadStart(Properties));//t1线程调用带参数的Properties方法
Thread t2 = new Thread(new ParameterizedThreadStart(Consumer));//t2线程调用带参数的Consumer方法
t1.IsBackground = true;
t2.IsBackground = true;
t1.Start(prop); //prop为Properties方法的实参
t2.Start(con); //con为Consumer方法的实参

第一种方案是:

将 IsBackground 注释掉,这个参数是后台执行的意思,这样主线程就不知道子线程的情况了,所有直接下一步了

还有一种方案是:

t1.Join();//阻塞主线程
t2.Join();//阻塞主线程

在下面加上这两句,用于阻塞主线程,场景是可以在下面执行第三个线程,这样就是等前面所有线程执行后,再执行接下来的线程,不然所有线程都并发了,没有交互。

完!

 

推荐阅读