COM Objekt abwürgen



  • Hallo,

    ich hab mittels CoCreateInstance ein COM Objekt erzeugt und rufe von diesem aus eine sehr aufwändige Funktion auf. Deshalb hab ich den Aufruf dieser Funktion in einen Thread gepackt. Nun hätte ich es auch noch ganz gerne dass man den Vorgang während der Durchführung abbrechen kann. Jedoch scheint es nicht damit getan zu sein, den Thread abzuschießen, da ein wiederholtes Aufrufen der Funktion dann zu einer Ausnahme führt (in der DLL in der das Objekt definiert ist).

    Weiß jemand wie ich dieses COM Objekt bei Benutzerabbruch komplett lahmlegen kann, sodass ich es danach wieder neu benutzen kann?


  • Mod

    Das hängt von dem COM Objekt ab. Wenn dieses eine DLL ist die im Prozess liegt, dann kann das abbrechen (abschiessen des Threads) diesen in einem undefinierbaren Zustand lassen.

    Du hast da keine "saubere" Möglichkeit, wenn diese nicht selbst in dem Objekt Model vorgesehen wird.



  • wenn's in einer DLL steckt hilft vielleicht 'FreeLibrary'
    🙂



  • Danke für die Antworten...Das Handle was ich für FreeLibrary benötige habe ich nie gespeichert. Es wird nur bei starten des Programms einmal mit LoadLibrary geholt um die DLL zu registrieren, danach aber auch schon wieder freigegeben. Die DLL an der besagten Stelle mittels DllUnregisterServer zu 'deaktivieren' bringt leider auch nichts.
    @Martin: Was meinst du mit "sauber"? Wie würde Windows denn diesen Prozess töten, wenn ich den Prozess meines Programmes einfach ausm Taskmanager heraus vernichte?


Anmelden zum Antworten