我编写COM组件,安装在一个服务器上,在网页里和客户程序调组件中同一个接口,我发浏览网页时,服务器任务管理器有三个dllhost.exe进程,有一个进程能手工停掉,而另两个却不能; 在客户程序调用组件接口时,服务器任务管理器有两个dllhost.exe进程,有一个进程能手工停掉,而另一个却不能.为什么同一样组件接口在网页和客户程序调用,dllhost.exe进程个数不一样? 为什么有的dllhost.exe进程能手工停掉,而有的却不能?

解决方案 »

  1.   

    这几个dllhost不一定都是由于你的这个COM组件运行而加载的,别的组件一样有可能加载它们。
    你的客户程序调用的组件是inproc还是local server或者是remote server都对它有影响,如果你真的要试验这个加载过程,可以写一个自己的组件宿主进程,不过好象IIS一定会将加载组件委托给dllhost,这倒是没有试过,但是一般来说,如果你是以local server加载一个组件,而实现组件又是在dll中,组件的appid下面的dllsorragate为空的则加载一个dllhost,不会一个实例加载几个dllhost的