Announcement

Collapse
No announcement yet.

Probleme mit Sink Objekten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme mit Sink Objekten

    Hallo,

    ich bin am verzweifeln! Ich habe in einer .NET Assembly eine Klasse als COM Objekt veröffentlicht. Zu dieser Klasse gibt es ein Interface das die Ereignisse abbildet und über das Attribut ComSourceInterfaces an die Klasse gebunden ist.
    <br>
    [GuidAttribute("42525070-6DB3-4F7B-8CB9-AC87124F8D43")]
    [InterfaceTypeAttribute (ComInterfaceType.InterfaceIsIDispatch)]
    public interface IDenSymViewerEvents
    {
    [DispId(1)]
    void DenSymbolSelect ();
    [DispId(2)]
    void CloseViewer ();
    }
    <br>
    [ComVisible ( false )]
    public delegate void DenSymbolSelectDelegate ();
    <br>
    [ComVisible ( false )]
    public delegate void CloseViewerDelegate ();
    <br>
    [GuidAttribute("AF3B0F80-779E-4F22-8A33-740725C7EA31")]
    [ClassInterface ( ClassInterfaceType.None )]
    [ComSourceInterfaces ( "Symbols.IDenSymViewerEvents" )]
    public class DenSymView : ISymView
    ...
    <br>

    Wenn ich nun einen C++/MFC Client dazu schreibe funktioniert zunächst alles wunderbar. Ich kann eine Instanz der Klasse erstellen und mit ihr arbeiten. Ich kann ein Sink Objekt implementieren und beim Server anmelden. Die Ereignisse werden auch ausgelöst. Wird der Client aber nun beenden (hier sind schon alle Objekte wieder zerstört und das Sink Objekt abgemeldet) gibt es eine Zugriffsverletzung.
    <br>
    Eine Ausnahme (erste Chance) bei 0x79202781 in
    TEST.EXE: 0xC0000005: Zugriffsverletzung-Leseposition 0x03184db0.
    <br>
    Das passiert nicht, wenn ich das Sink Objekt nicht mit den Funktionen AfxConnectionAdvise und AfxConnectionUnadvise beim Server an- und abmelde. Und interessanter weise passiert das auch nur bei meinem MFC Client. Ein mit Delphi geschriebener Client funktioniert ohne Probleme.

    Gibt es hier vielleicht ein Problem beim entladen der Framework DLL’s ?? Oder gibt der GarbageCollector irgendwas zu früh frei (aber was? Ich habe ja schon alle Objekte zerstört).
    <br>
    Hat jemand ähnliche Probleme? Ich wäre für jeden Hinweis dankbar.
    <br>
    Viele Grüße

    Gregor
Working...
X