19.06.2016, 14:50
Hallo zusammen
Ich habe eine kundenspezifische .NET-DLL, die mir per Event Daten zukommen lässt - es klappt (von LabVIEW aus gesehen) alles gut.
Zu meiner vollen Zufriedenheit fehlt aber folgende Sache:
Die Entwicklungsumgebung ist aktiv. Das Anwenderprogramm wird gestartet und die Verbindung zur .NET-DLL hergestellt. Dann werden diverse Male Daten ausgetauscht. Zuletzt wird das Anwenderprogramm beendet. Auch die .NET-Schnittstelle wird beendet. Und zwar in folgender Reihenfolge, sequenziert durch den Error-Cluster:
* Schließen des Konstruktors, der beim Erstellen des Event-Callbacks (Ereignis-Registrierung) verwendet wird.
* Aufheben der Ereignis-Registrierung.
* Schließen der VI-Referenz des VIs, das der Ereignis-Registrierungs-Knoten erzeugt hat.
Keines dieser drei Elemente erzeugt einen Fehler.
Aber:
Das Callback-VI ist noch aktiv. Was zur Folge hat, dass SubVIs und Typdefinitionen, die sich im Callback-VI befinden, in der IDE auch bei nicht laufendem Anwenderprogramm nicht änderbar sind. Ich muss immer das ganze Projekt schließen und neu öffnen. Erst dann kann ich die verwendeten SubVIs ändern. Daraus schließe ich, dass das Callback-VI noch "läuft" (wie auch immer) - obwohl ich die Referenzen (im Übrigen nach Vorlage) doch fehlerfrei beendet habe.
Ich will, wenn das Anwenderprogramm nicht mehr läuft, auch die SubVIs, die sich im Callback-VI befinden, ändern können.
Was mach ich falsch? Warum gehen diese SubVIs nicht ändern?
Die Reihenfolge des Schließens der Referenzen ist offensichtlich irrelevant. Muss ich das Callback-VI explizit "beenden" - wenn ja wie: Ich hab nichts gefunden, das funktioniert. Das Callback-VI geht auch in der IDE nicht beenden: Der rote Abbruch-Button ist ausgegraut.
Ich habe eine kundenspezifische .NET-DLL, die mir per Event Daten zukommen lässt - es klappt (von LabVIEW aus gesehen) alles gut.
Zu meiner vollen Zufriedenheit fehlt aber folgende Sache:
Die Entwicklungsumgebung ist aktiv. Das Anwenderprogramm wird gestartet und die Verbindung zur .NET-DLL hergestellt. Dann werden diverse Male Daten ausgetauscht. Zuletzt wird das Anwenderprogramm beendet. Auch die .NET-Schnittstelle wird beendet. Und zwar in folgender Reihenfolge, sequenziert durch den Error-Cluster:
* Schließen des Konstruktors, der beim Erstellen des Event-Callbacks (Ereignis-Registrierung) verwendet wird.
* Aufheben der Ereignis-Registrierung.
* Schließen der VI-Referenz des VIs, das der Ereignis-Registrierungs-Knoten erzeugt hat.
Keines dieser drei Elemente erzeugt einen Fehler.
Aber:
Das Callback-VI ist noch aktiv. Was zur Folge hat, dass SubVIs und Typdefinitionen, die sich im Callback-VI befinden, in der IDE auch bei nicht laufendem Anwenderprogramm nicht änderbar sind. Ich muss immer das ganze Projekt schließen und neu öffnen. Erst dann kann ich die verwendeten SubVIs ändern. Daraus schließe ich, dass das Callback-VI noch "läuft" (wie auch immer) - obwohl ich die Referenzen (im Übrigen nach Vorlage) doch fehlerfrei beendet habe.
Ich will, wenn das Anwenderprogramm nicht mehr läuft, auch die SubVIs, die sich im Callback-VI befinden, ändern können.
Was mach ich falsch? Warum gehen diese SubVIs nicht ändern?
Die Reihenfolge des Schließens der Referenzen ist offensichtlich irrelevant. Muss ich das Callback-VI explizit "beenden" - wenn ja wie: Ich hab nichts gefunden, das funktioniert. Das Callback-VI geht auch in der IDE nicht beenden: Der rote Abbruch-Button ist ausgegraut.