INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

Beenden des Event-Callback-VIs ?



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

19.06.2016, 14:50
Beitrag #1

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Beenden des Event-Callback-VIs ?
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.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
19.06.2016, 19:34
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Beenden des Event-Callback-VIs ?
Hallo DuSelbst,

Gegenfrage: Wieso läuft das Callback-VI noch?

Ich habe bisher nicht viel DotNET-Callbacks programmiert. Aber wenn, dann waren das immer VIs, die einfach die Daten vom Callback in eine Queue geschoben haben und sofort wieder beendet wurden.
Machst du das nicht so?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.06.2016, 22:44
Beitrag #3

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Beenden des Event-Callback-VIs ?
(19.06.2016 19:34 )GerdW schrieb:  Gegenfrage: Wieso läuft das Callback-VI noch?
Das weis ich nicht.
Ich gehe davon aus, dass das VI noch läuft. Eben weil alle SubVIs und Typdefinitionen, die in der Hierarchie das Callback-VIs liegen, nicht änderbar sind - ebenso wie bei "normalen" SubVIs auch.

Zitat:VIs, die einfach die Daten vom Callback in eine Queue geschoben haben und sofort wieder beendet wurden. Machst du das nicht so?
Doch, genau so mach ich das auch (und so soll es auch sein). Hinweis: Das Callback-VI wird beendet, weil der komplette Code abgearbeitet wurde. Ich gehe davon aus, dass das ausreicht.

Eigentlich werden die Daten lediglich per Queue verschickt. Allerdings wird vorher noch der Index der Ereignisreferenz berechnet (es laufen mehrere ablaufinvariante VIs). Hierzu ist eine FGV erforderlich - die nicht mehr änderbar ist.

Die tatsächliche Laufzeit des Callback-VIs ist bestimmt minimal. "Laufen" wird das Programm bestimmt nur ganz kurz. Die Frage ist: gehört der Bereitschaftszustand, der notwendig ist, um den Event entgegenzunehmen, zur "Laufzeit" des Programmes oder nicht.

Kann es sein, dass dieser "Bereitschaftszustand" irgendwie mit VB-.Net zusammenhängt?

Vielleicht noch folgender Hinweis:
Es wird zwar nur eine DLL verwendet. Ich muss aber drei "Connects" machen, die jeweils eine TCP/IP-Schnittstelle bedienen, deren (zwischenverarbeitete) Response-Daten ich als Event erhalte. Demzufolge hab ich auch drei Callback-VIs, die aber als Instanz eines(1) VIs generiert werden.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.06.2016, 11:33 (Dieser Beitrag wurde zuletzt bearbeitet: 20.06.2016 11:37 von rolfk.)
Beitrag #4

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Beenden des Event-Callback-VIs ?

Akzeptierte Lösung

(19.06.2016 19:34 )GerdW schrieb:  Hallo DuSelbst,

Gegenfrage: Wieso läuft das Callback-VI noch?

Ich habe bisher nicht viel DotNET-Callbacks programmiert. Aber wenn, dann waren das immer VIs, die einfach die Daten vom Callback in eine Queue geschoben haben und sofort wieder beendet wurden.
Machst du das nicht so?

Um das Callback VI innerhalb von .Net ausführbar zu machen wird es in einen seperate Context (Application Instance) geladen und das hat zur Folge dass das VI reserviert ist und auch aus anderen Contexts nicht mehr modifizierbar ist. Mir ist nicht ganz genau bekannt ob und wie sich so ein VI wieder unreservieren lässt und bis jetzt hat es mich zuwenig gestört, dass ich da wirklich weiter gesucht habe.
Wenn Du je mit Actor Programmierung beginnen solltest wirst Du Dich da auch mit solchen Dingen ärgern und da ist kein .Net im Spiel.

Korrektur: Hier gibt es einen Workaround: http://www.ni.com/product-documentation/...y_Category

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.06.2016, 20:13
Beitrag #5

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Beenden des Event-Callback-VIs ?
(20.06.2016 11:33 )rolfk schrieb:  Um das Callback VI innerhalb von .Net ausführbar zu machen wird es in einen seperate Context (Application Instance) geladen und das hat zur Folge dass das VI reserviert ist und auch aus anderen Contexts nicht mehr modifizierbar ist. Mir ist nicht ganz genau bekannt ob und wie sich so ein VI wieder unreservieren lässt und bis jetzt hat es mich zuwenig gestört, dass ich da wirklich weiter gesucht habe.
Wenn Du je mit Actor Programmierung beginnen solltest wirst Du Dich da auch mit solchen Dingen ärgern und da ist kein .Net im Spiel.

Korrektur: Hier gibt es einen Workaround: http://www.ni.com/product-documentation/...y_Category
Hervorragend.

Danke schön, rolfk.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.09.2019, 14:44
Beitrag #6

Nominas Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: Jan 2010

2018; 2021
2001
DE_EN

78713
Deutschland
Thumbs Up RE: Beenden des Event-Callback-VIs ?
DANKE! Yourock

Ich habe den halben Tag nach der richtigen Beschreibung gesucht
und unter Deinem Link endlich gefunden.

Gruß
Nominas
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  NotifyIcon Callback 83Daniel 3 5.243 30.10.2018 10:24
Letzter Beitrag: 83Daniel
  Scrollrad Event Callback chris_deus 2 5.032 04.01.2011 10:57
Letzter Beitrag: chris_deus
  Ereignis-Callback registrieren/ Callback VI Nico 3 9.277 01.08.2009 15:48
Letzter Beitrag: ImExPorty
  Event Callback Knoten verursacht Probleme mit den Treibern eines Devices wonx 3 6.938 28.07.2009 14:32
Letzter Beitrag: rolfk
  Hidden event und event mit Parameter uebergabe mit LV8 active x .Net? Reiner 8 7.840 04.09.2007 12:44
Letzter Beitrag: Reiner

Gehe zu: