我想知道如果我有一个创建另一个进程的程序,这个创建的进程是在创建者内部运行的吗?如果是这样,它是否总是必须这样做(有没有办法将它附加到另一个进程)?
我问这个问题的原因实际上是因为我正在尝试确定是否要创建一个特定的线程,后台线程。以下是场景:
进程A正在启动一个调用wcf服务的程序B。但是,我从程序B产生了一个线程来进行实际的服务调用。如果我将线程设置为后台线程,而进程A崩溃或终止,线程会终止吗?如果是这样,我如何将线程从进程中解耦?
发布于 2010-11-02 17:39:47
Windows进程是相互独立的。父进程和子进程的生命周期根本没有显式耦合。
线程在其生命周期内由创建它的进程拥有,并在创建进程退出时(如果不是在此之前)终止。
如果一个进程希望控制另一个进程的生命周期,那么它需要一个指向受控进程的HANDLE
。这可以通过成为受控进程的创建者(在这里,句柄从创建调用中返回)或(如果有正确的权限)通过OpenProcess获得。在.Net中,这是使用Process class上的Get*
方法完成的。
发布于 2010-11-02 17:27:52
一个进程不会在windows中的另一个进程中运行(线程在进程中运行)。
在您的场景中,一旦程序B终止,线程也应该终止。
进程A上发生的事情根本不会影响线程。
https://stackoverflow.com/questions/4080353
复制