Knowledge Base KB0203

Wie wird Office Automation mit verwaltetem Code (C#, Visual Basic, .NET) verwendet?

Problem

Office verwendet COM, um Automatisierungsobjekte freizugeben. Im verwalteten Code, wie er von C# und Visual Basic verwendet wird, werden COM-Objekte in Runtime Callable Wrappers (RCWs) gewrappt. Ohne Eingreifen des Programmierers werden COM-Objekte, die in RCWs gewrappt sind, nur bei der Speicherbereinigung wieder freigegeben, was bei fehlendem Speicherdruck möglicherweise nie der Fall ist.

Lösung

Um COM-Objekte ausdrücklich freizugeben, geben Sie alle Objekte, die Sie von Office erhalten, mit System.Runtime.InteropServices.Marshal.ReleaseComObject frei, wenn Sie deren Verwendung abgeschlossen haben.

Hinweis

  • Verwenden Sie nicht System.Runtime.InteropServices.Marshal.FinalReleaseComObject, weil dadurch das COM-Objekt freigegeben wird, auch wenn es noch von anderen verwalteten Add-Ins verwendet wird.
  • Greifen Sie z. B. nicht auf ein Objekt durch ein anderes zu:
    // C#
    // Wrong
    PowerPoint.View view = Application.ActiveWindow.View;
    
    ' Visual Basic
    ' Wrong
    Dim view As PowerPoint.View = Application.ActiveWindow.View
    

    In diesem Fall erstellt ActiveWindow ein temporäres PowerPoint.Dokumentfenster, das nicht freigegeben wird.

    Weisen Sie es stattdessen einer Variablen zu und geben Sie es frei:

    // C#
    PowerPoint.DocumentWindow wnd = Application.ActiveWindow;
    PowerPoint.View view = wnd.View;
    System.Runtime.InteropServices.Marshal.ReleaseComObject(wnd);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(view);
    
    ' Visual Basic
    Dim wnd As PowerPoint.DocumentWindow = Application.ActiveWindow
    Dim view As PowerPoint.View = wnd.View
    System.Runtime.InteropServices.Marshal.ReleaseComObject(wnd)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(view)
    
think-cell setzt Cookies ein, um die Funktionalität, Leistung und Sicherheit dieser Webseite zu verbessern. Ihre Einwilligung dazu ist erforderlich, damit diese Webseite ordnungsgemäß funktioniert. Weitere Informationen zum Einsatz von Cookies durch think-cell, zur Einwilligung und zu Ihren Datenschutzrechten finden Sie in unserer Datenschutzerklärung.