我想知道我是否有一个创建另一个进程的程序,该创建的进程是否在创建者中运行?如果是这样,它是否总是必须(有没有办法将它附加到另一个进程)?
我问的原因实际上是因为我试图确定是否要创建一个特定的线程,一个后台线程。这是场景:
进程A正在启动一个调用wcf服务的程序B.但是,我正在从程序B中生成一个线程来进行实际的服务调用。如果我将线程设置为后台线程并且进程A崩溃或终止,那么线程是否会终止?如果是这样,我怎样才能将线程与进程分离?
答案 0 :(得分:3)
进程不在Windows中的另一个进程中运行(线程在进程内运行)。
在您的方案中,一旦程序B终止,该线程也应该终止。
进程A上发生的事情根本不会影响线程。
答案 1 :(得分:2)
Windows进程彼此独立。父母和子女的过程生命周期根本没有明确的耦合。
线程由创建它的进程在其生命周期内拥有,并在创建进程退出时(如果不是之前)终止。
如果某个流程希望控制其他流程的生命周期,则需要对受控流程HANDLE
。这可以通过成为受控进程的创建者(此处,从创建调用返回句柄),或通过OpenProcess(给定正确的权限)来获得。在.Net中,这是使用Process class上的Get*
方法完成的。