Wechselrichter
Grünschnabel
Guten Tag zusammen,
ich bin blutiger Anfänger was VB betrifft, habe aber große Aufgaben vor mir. Folgendes Problem allgemein formuliert: Ich möchte in einer Prozedur einen Thread implementieren, der komplett nebenläufig arbeitet und es damit ermöglicht, andere Prozeduren trotzdem anzusprechen. Bisher ist es ja so, wenn ich eine Prozedur aufrufe, dann beansprucht diese Prozedur die gesamte CPU für sich, so lange sie läuft.
Hintergrund ist folgender: Ich arbeite mit zenOn, einem Visualisierungsprogramm für die Industrie, und dieses hat einen fest eingebundenen VB Editor mit dabei. Nun soll ein permanenter Netzwerkscan im Hintergrund laufen und immer, wenn er fertig ist, das Scan Ergebnis mit Hilfe von C Programmen auswerten und in Textdateien schreiben. Soweit ist ja alles in Ordnung, denn die Anwendung läuft im Hintergrund ab und blockiert nicht die zenOn Benutzeroberfläche.
Aber VB muss trotzdem kurz aktiv werden, um die Zeilen der Textdateien einzulesen und in Variablen abzuspeichern, die dann wieder auf der Seite angezeigt werden.
Hoffe, dass die oben aufgeführten Details reichen, um mir helfen zu können.
Was ich dafür lediglich benötige, ist Code für ein Modul, also API Funktionen, mit denen ich in der gewünschten Prozedur einen Thread aufziehen kann, der immer im Hintergrund läuft, bis ich auf der zenOn Seite auf den "anhalten" Button klicke.
Hier noch die ungefähre Vorstellung der Prozedur:
Public Sub Sollist()
CreateThread(...) 'Hier soll der Thread starten
While thisProject.Variables.Item("flag").Value = 0 'solange Variable == 0, läuft Schleife
SyncShell(pfad\mainPing.exe) 'externe C Programme werden gestartet
SyncShell(pfad\mainFilter.exe) ' "SyncShell" habe ich mir schon besorgt
Call ShowIP ' Prozeduraufruf, um Textdatei zu öffnen, zeilenweise einzulesen, ...
Wend
TerminateThread(...) 'Bei Klick auf Button "anhalten" wird Thread wieder beendet
Sub End
So Leute, jetzt seid Ihr dran. Vielleicht kann hier ja jemand einen einfachen Beispielcode posten, der Abhilfe schaffen kann.
Wäre echt super!
Gruß
Der Wechselrichter
ich bin blutiger Anfänger was VB betrifft, habe aber große Aufgaben vor mir. Folgendes Problem allgemein formuliert: Ich möchte in einer Prozedur einen Thread implementieren, der komplett nebenläufig arbeitet und es damit ermöglicht, andere Prozeduren trotzdem anzusprechen. Bisher ist es ja so, wenn ich eine Prozedur aufrufe, dann beansprucht diese Prozedur die gesamte CPU für sich, so lange sie läuft.
Hintergrund ist folgender: Ich arbeite mit zenOn, einem Visualisierungsprogramm für die Industrie, und dieses hat einen fest eingebundenen VB Editor mit dabei. Nun soll ein permanenter Netzwerkscan im Hintergrund laufen und immer, wenn er fertig ist, das Scan Ergebnis mit Hilfe von C Programmen auswerten und in Textdateien schreiben. Soweit ist ja alles in Ordnung, denn die Anwendung läuft im Hintergrund ab und blockiert nicht die zenOn Benutzeroberfläche.
Aber VB muss trotzdem kurz aktiv werden, um die Zeilen der Textdateien einzulesen und in Variablen abzuspeichern, die dann wieder auf der Seite angezeigt werden.
Hoffe, dass die oben aufgeführten Details reichen, um mir helfen zu können.
Was ich dafür lediglich benötige, ist Code für ein Modul, also API Funktionen, mit denen ich in der gewünschten Prozedur einen Thread aufziehen kann, der immer im Hintergrund läuft, bis ich auf der zenOn Seite auf den "anhalten" Button klicke.
Hier noch die ungefähre Vorstellung der Prozedur:
Public Sub Sollist()
CreateThread(...) 'Hier soll der Thread starten
While thisProject.Variables.Item("flag").Value = 0 'solange Variable == 0, läuft Schleife
SyncShell(pfad\mainPing.exe) 'externe C Programme werden gestartet
SyncShell(pfad\mainFilter.exe) ' "SyncShell" habe ich mir schon besorgt
Call ShowIP ' Prozeduraufruf, um Textdatei zu öffnen, zeilenweise einzulesen, ...
Wend
TerminateThread(...) 'Bei Klick auf Button "anhalten" wird Thread wieder beendet
Sub End
So Leute, jetzt seid Ihr dran. Vielleicht kann hier ja jemand einen einfachen Beispielcode posten, der Abhilfe schaffen kann.
Wäre echt super!
Gruß
Der Wechselrichter