DLL Variable per event abfragen?

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    DLL Variable per event abfragen?

    Bin jetzt knapp ein Jahr dabei und erst jetzt kann ich keine Antwort auf eine Frage finden. VB-Paradise.de :thumbsup:

    Und nu zu mein Problem:

    Ich habe eine CANOPEN-Bus Karte in mein Rechner, hierzu gibt es auch eine DLL, die auch wunderbar Funktioniert.

    Ich frage die Karte per Timer jede Sekunde ab, ob diese Karte Daten von anderen Bus-Teilnehmer erhalten hat. Und gegebenfalls werden die Daten abgerufen.

    Jetzt möchte ich aber nicht jede Sekunde abfragen sondern nur wenn die Variable Daten erhalten sich geändert hat.

    Die DLL besitzt keine Events!

    Ist das überhaupt möglich?
    Nicht so wie Du denkst.
    Du kannst natürlich die Abfrage kapseln (separater Thread / separate DLL), diese(r) pollt und sendet einen Event an das Hauptprogramm.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @ Erfinder des Rades -> Eine Klasse mit ca. 15 Funktionen und 20 Eigenschaften (nicht gezählt)


    Du kannst natürlich die Abfrage kapseln (separater Thread / separate DLL), diese(r) pollt und sendet einen Event an das Hauptprogramm.




    Wie meinst du das mit pollt?
    Hallo Duff,

    mit Pollen ist ein periodisches Abfrage gemeint.
    Sprich -> Timer

    Deine Dll in eine Dll einbinden.
    Den Timer die Abfrage machen lassen
    ggf. Event feuern, auf das die Anwendung reagieren kann.

    Das Ganze in einen eigenen Thread

    Gruss

    mikeb69
    vlt. verfügt die Klasse ja auch über asynchrone Read-Methoden?

    ZB NetworkStream (oder glaub Streams überhaupt) haben eine BeginRead - Methode, die weder den Thread blockiert, noch herumpollt, sondern es gibt einen Callback, der wie durch Geisterhand vom NebenThread aufgerufen wird, wenn Daten eintrudeln.

    Asynchrones Entwurfsmuster heißt das, und ist bisserl umständlich zu handeln.
    Aber ist performant und resourcenschonend

    ein Sample mittm Networkstream: VersuchsChat
    Hab gerade mal nachgeschaut. Nach mein Wissenstand verfügt sie darüber nicht.

    Wäre auch sehr cool gewesen, weil Networkstream wäre nicht das Problem gewesen.

    Werde zusätzlich Montag den Hersteller von der Karte informieren und versuchen am Quellcode der DLL zu kommen oder die sollen da ein Event rein hauen.

    Im Beispielprogramm der Karte ist es auch nur möglich über ein Button die Daten zu erhalten. Und in der Doku ist auch nicht anderes zu finden.

    Duff411 schrieb:

    Werde zusätzlich Montag den Hersteller von der Karte informieren und versuchen am Quellcode der DLL zu kommen oder die sollen da ein Event rein hauen.

    Da wirst Du kein Glück haben.
    Entweder die machen ein Event rein, weil sie der Meinung sind es tun zu müssen OrElse die machen dass, weil Du ihnen dann 1000 oder mehr Stück Karten abnimmst.
    ABER Du bekommst NIEMALS keine Zeile Quellcode von denen zu sehen, denn die Quellen sind deren Betriebskapital und Du kannst nicht beweisen, dass Du sie nicht den Chinesen zum Kauf angeboten hast oder so.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!