AutoResetEvent-Handle in C++ DLL verwenden



  • Hallo ich hab mich vor kurzem in ein Programm einarbeiten müssen um darin was zu erweitern.
    Dabei wurde in dem Programm an eine Unterfunktion in einer DLL der Handle auf ein AutoResetEvent übergeben.

    AutoResetEvent ev;
    ev.SafeWaitHandle.DangerousGetHandle();
    

    In C# war der entsprechende Parameter der Unterfunktion als IntPtr angegeben, was ja einen Platformspezifischen container darstellt der die Breite eines Integer besitzt.

    Funktionieren tut das ganze ja prinzipiell weil das event ein Systemobjekt ist, welches durch die AutoResetEvent Klasse nur für C# gewrapped wird.

    Ich würde das jetzt ganz gern selber in einem anderen Programmteil verwenden. Leider weiß ich allerdings nicht wie der Handle auf das Event dann im C++ Teil verwendet werden muss.
    Also in welchen Typen ich den Handle casten muss, damit ich das event auslösen kann.

    Wär super wenn mir da jemand weiterhelfen kann!



  • Gib dem Event doch einfach einen Namen und benutze auf der C++ Seite OpenEvent(...).

    Edit:
    Wenn ich das korrekt verstanden habe musst Du nichts casten.
    Schreibe in der Signatur der extern Funktion einfach IntPtr und auf der C++ Seite dann HANDLE.



  • Danke für den Tipp!
    genau so funktioniert es 🙂


Anmelden zum Antworten