C
Christopher G. Carnahan
I have a C# service that is making regular calls into an out-of-process COM
component written in VB6. Problem is, if the VB component blocks and hangs,
or goes into an infinite loop (don't ask why, it just does), then I want to
free and release it.
When I've decided I'm done waiting for the object to return, I call
Thread.Abort on the thread that created the COM object and called the method
that is blocking. But it doesn't look like that thread actually aborts.
And of course, the actual process that the component is running in hangs
around, stuck in it's infinite loop. And subsequent Requests for that COM
component will stall forever, right, because the single VB thread is already
consumed by the first infinite loop?
Does anybody have any ideas? Worst case scenario, I need to identify the
process that the VB6 object is in and kill it. But nothing in the interop
library that I can find will identify that process for me? Am I missing it?
- Christopher
component written in VB6. Problem is, if the VB component blocks and hangs,
or goes into an infinite loop (don't ask why, it just does), then I want to
free and release it.
When I've decided I'm done waiting for the object to return, I call
Thread.Abort on the thread that created the COM object and called the method
that is blocking. But it doesn't look like that thread actually aborts.
And of course, the actual process that the component is running in hangs
around, stuck in it's infinite loop. And subsequent Requests for that COM
component will stall forever, right, because the single VB thread is already
consumed by the first infinite loop?
Does anybody have any ideas? Worst case scenario, I need to identify the
process that the VB6 object is in and kill it. But nothing in the interop
library that I can find will identify that process for me? Am I missing it?
- Christopher