C#在一个进程中调用另一个进程后台进程IsBackground

最近在做一个项目时,需要在一个进程中调用另一个进程,这里记录一下,
在msdn 上有一个简介,上面的介绍:https://msdn.microsoft.com/en-us/library/system.diagnostics.process.start(v=vs.110).aspx
是通过 Process.Start 方法,这个方法是一个重构的方法。
有时调用其他的进程可能调用不起来,这时可能还需要一句,来获取另一个进程的工作路径
Process proc = new Process();
string MainAppPath = "test.exe";//the path of the exe file
proc.StartInfo.FileName = MainAppPath;
proc.StartInfo.WorkingDirectory = Path.GetDirectoryName(MainAppPath);;
proc.Start();
参考链接:https://segmentfault.com/a/1190000003740834
虽然这样调用了另一个线程,但是如果想要把该线程给杀死了,但是由于我调用的那个线程里面的主线程又创建了几个线程,但是我虽然把主线程
给杀死了,但是那几个子线程并没有停止运行,后来在网上又继续百度了一下,是因为新开的线程的IsBackground属性没有设置为True,新建的线程
默认是FALSE,当主线程退出的时候,IsBackground=False的线程还会继续执行下去,直到线程执行结束,只有IsBackground=True的线程才会随着
主线程的退出而退出,当初始化一个线程的时候,把IsBackground设为True,指示该线程为后台线程,只有这样后台线程才会随着主线程的退出而退出
原理:只有所有前台线程都终止以后,CLR就会对每一个活动在后台的线程调用Abort()来彻底终止应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Master_Yoda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值