Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

Powergui in Job auslagern?

$
0
0

Hallo,

folgender Sachverhalt: 

- Eine Form mit eine Abfrage (Button: Ja/Nein) soll erzeugt werden.

- Nach Bestätigung soll zunächst ein externes Programm ausgeführt werden 

- Die Form soll weiterhin ausgeführt werden und einen Abbruch - Button enthalten der das externe Programm und

  die Powershell jederzeit beenden kann

- Wenn das externe Programm beendet ist, soll das Script weiter ausgeführt werden:

  Der Inhalt eines Labels in der Form soll geändert und eine weitere Routine soll ausgeführt werden. 

Nun mein Problem:

Ich starte das externe Programm und anschließend einen Job der in bestimmten Abständen abfragt, ob das Programm noch läuft. Wenn das Programm beendet ist, wird der Job geschlossen. Über ein Register - EventObjekt wird nun der nächste Programmschritt ausgeführt. Allerdings funktioniert das nicht, da das Register - EventObjekt erst ausgeführt wird, wenn die erzeugte Form (Form.showdialog) geschlossen wird. 

Kurzes Bsp.:

$Erg=[reflection.assembly]::LoadWithPartialName("System.Windows.Forms")
$Form1=New-Object "System.Windows.Forms.Form"		
$Form1.Text="Testfenster"
$testjob = Start-Job { Start-Sleep -Seconds 2 }  
$null = Register-ObjectEvent $testjob -EventName StateChanged -Action {
	[Console]::Beep(1000,500)	
}
[void] $Form1.Showdialog() 

Ich könnte nun die Form ebenfalls in einem Job erzeugen. Ein Abbruch - Button könnte beide Jobs (bzw. das ganze Programm beenden). Das Register - ObjectEvent würde im eigenen Job ausgeführt werden. Nun könnte ich mit Hilfe des Register - ObjectEvents den anderen Job (also die Form) beenden und anschließend neu erzeugen und so das Programm fortführen. Das scheint mir aber keine optimale Lösung zu sein.

Gibt es z.B. eine Möglichkeit, einen Eventhandler zu erzeugen (wie z.B. ein Add-Click Event) der auf die Beendigung des Jobs reagiert bzw. die Möglichkeit, dass beide Jobs kommunizieren und so ein Event innerhalb der Form ausgelöst wird? Oder hat jemand eine Idee wie sich mein Vorhaben effizienter realisieren lässt? Steh gerade etwas auf dem Schlauch!

(PS: ich bin Anfänger was die PowerShell Programmierung angeht) 


Viewing all articles
Browse latest Browse all 2314

Trending Articles