Best way to cleanly terminate a hanging com interop call
Posted on 2004-09-30
I'm calling a 3rd party COM+ component from a C# program via the COM interop library. To accomplish this, I've added a reference to the 3rd party library to my C# project. The code looks something like this:
ThirdPartyClass myObj = new ThirdPartyClass();
myObj.ThirdPartyMethod ("myFile.JPG"); // call 3rd party method
The 3rd party component is an image processing library. Every now and then the call to ThirdPartyMethod "hangs" if I call it with a corrupt JPEG file. (I know the file is corrupt because both Picture Viewer and Paint display an error when they try to open it). I'm processing a ton of images and every now and then one of them will cause this problem. I'm working with the vendor to get the problem fixed.
In the meantime.... is there any way I can safely timeout and abort the ThirtdPartyMethod call? The obvious thing to do is to wrap the ThirdPartyMethod call in a separate thread, set a timer and abort the thread when the timer pops. But I wonder how that affects the process which is hosting the COM object? I would think that it would continue to process the method call which means that I've just moved the problem rather than solved it.