子进程是否始终在父进程内运行?是......线程......?

时间:2010-11-02 17:24:53

标签: c# .net

我想知道我是否有一个创建另一个进程的程序,该创建的进程是否在创建者中运行?如果是这样,它是否总是必须(有没有办法将它附加到另一个进程)?

我问的原因实际上是因为我试图确定是否要创建一个特定的线程,一个后台线程。这是场景:

进程A正在启动一个调用wcf服务的程序B.但是,我正在从程序B中生成一个线程来进行实际的服务调用。如果我将线程设置为后台线程并且进程A崩溃或终止,那么线程是否会终止?如果是这样,我怎样才能将线程与进程分离?

2 个答案:

答案 0 :(得分:3)

进程不在Windows中的另一个进程中运行(线程在进程内运行)。

在您的方案中,一旦程序B终止,该线程也应该终止。

进程A上发生的事情根本不会影响线程。

答案 1 :(得分:2)

Windows进程彼此独立。父母和子女的过程生命周期根本没有明确的耦合。

线程由创建它的进程在其生命周期内拥有,并在创建进程退出时(如果不是之前)终止。

如果某个流程希望控制其他流程的生命周期,则需要对受控流程HANDLE。这可以通过成为受控进程的创建者(此处,从创建调用返回句柄),或通过OpenProcess(给定正确的权限)来获得。在.Net中,这是使用Process class上的Get*方法完成的。