In einem Powershell-Skript habe ichKönnen in PowerShell 2 Funktionen gleichzeitig ausgeführt werden?
function f1{ do something}
function f2{ do something else}
button1
button2
richtextbox
Wenn ich button1
drücken es läuft f1
und es gibt Daten im richtextbox
. Wenn ich drücke, muss das Skript f2
ausgeführt werden, auch wenn f1
nicht beendet ist. Die Daten von f2
Ich brauche es nicht in der gleichen richtextbox
ausgegeben werden, kann es ein anderer sein. Meine Frage ist: Können in PowerShell 2 verschiedene Funktionen gleichzeitig ausgeführt werden?
Update: Für mein PowerShell-Skript habe ich eine GUI, die eine Reihe von Schaltflächen hat, die verschiedene Dinge tun. Wenn ich einen Knopf drücke, beginnt es sich mit einem seriellen Gerät zu verbinden und gibt Daten an die Richtextbox aus und an einigen Punkten speichert es Daten in einer Textdatei. 2 weitere Tasten haben folgende Funktionen: Sie übernehmen Teile der Daten aus der gespeicherten Textdatei, öffnen einen temporären PHP-Webserver, öffnen einen Link zum Erstellen einer PDF-Datei und senden die Datei zum Drucken an den richtigen Drucker/Tray . Diese 2 Tasten habe ich gerade bemerkt, dass sie funktionieren. Mein Problem ist mit den Schaltflächen, die in einem Popup-Formular sind. Eine andere Schaltfläche aus meinem Hauptformular öffnet ein Popup-Formular und füllt es mit Daten aus der oben gespeicherten Textdatei.
$print_equip_button.Add_Click({
print "link.php?data=$data" $file_location $type
}.GetNewClosure())
In der Hauptform funktioniert der obige Code, von Popup es nicht. Auch ohne Glück versucht.
$print_equip_button.Add_Click({
Start-Job -ScriptBlock {print "link.php?data=$data" $file_location $type}
}.GetNewClosure())
Ich habe am Anfang einer Funktion hinzugefügt
for($i=1;$i -le 100;$i++){
[System.Windows.Forms.Application]::DoEvents()
start-sleep -s 1
$LogTextBox.Text = "$temp`n" + "Count $i"
}
um zu sehen, ob das, was f1 funktioniert passiert, wenn ich eine Taste im Popup drücken und aus dem, was ich sehe, wenn ich öffne Das Popup-Formular, das Zählen stoppt und fährt fort, wenn ich es schließe.
UPDATE: Ich habe festgestellt, dass, wenn ich das Skript in PowerShell ISE geöffnet und es von dort ausführen, funktioniert alles wie ich wollte ohne die Notwendigkeit von "Start-Job". Beim Ausführen der .ps-Datei allein funktioniert es nicht, nicht einmal mit "Start-Job"
Werfen Sie einen Blick auf [Jobs] (https://msdn.microsoft.com/en-us/powershell/reference/4.0/microsoft .powershell.core/about/about_jobs). – Richard
Mit 'Start-Job -ScriptBlock {Funktion} ohne Glück versucht – xlucian