Fragensteller
Warten nach Methoden / Funktionsaufruf bis die Methode abgelaufen ist

Allgemeine Diskussion
-
Hallo zusammen,
ich suche eine Möglichkeit zu warten bis die nächste Funktion aufgerufen wird.
Derzeit sieht es folgendermaßen aus:
in der main habe ich die Funktionsaufrufe:
funktion1();
funktion2();In der Funktion 1 wird ein Powershell Skript ausgeführt, nur leider wird derzeit nicht gewartet bis das PS Skript tatsächlich durchgelaufen ist.
public void funktion1()
{
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "powershell.exe";
psi.Arguments = "'test2.ps1'";
Process process = new Process();
process.StartInfo = psi;
process.Start();
process.WaitForExit();}
Wie bekomme ich es hin das darauf gewartet wird bis die erste Funktion fertig durchlaufen ist bevor die zweite Funktion aufgerufen ist ?
Vielen Dank
- Typ geändert Robert BreitenhoferModerator Montag, 30. Juli 2012 10:50 Keine Rückmeldung des Fragenstellender
Alle Antworten
-
Hi vielen Dank schonmal für die schnelle Antwort.
Ja das dachte ich auch das ich das mit WaitForExit(); mache, aber das scheint noch nicht so richtig zu funktionieren.
Vielleicht hole ich nochmal ein bisschen aus.
Es ist so das meine Anwendung ein Windows Dienst ist, wenn ich mein skript auseinender baue und einzeln compiliere funktioniert das auch wunderbar.
Aber wenn ich das als Dienst installiert habe führt er das Powershell skript nicht aus, dort werden Verbindungen zu unterschiedlichen Systemen erstellt, die auch etwas länger dauern können.
Da hab ich mir gedacht evtl. sind die beiden Funktionsaufrufe zu schnell hintereinander, bzw. die erste Funktion mit dem ersten PS Skript wird unterbrochen.Daher habe ich gedacht es gibt noch eine andere Möglichkeit zu warten bis das Powershell Skript wirklich durchgelaufen ist.
-
Hi,
dann hast Du falsch gedacht. Die Aufrufe erfolgen nacheinander.
Ich tippe eher auf ein Berechtigungs- oder Verständnisproblem. Ein Dienst ist in vielen Dingen anders zu behandel als eine normale Winforms Anwendung.
Mit welchem Account wird der Dienst denn ausgeführt? Darf der Account ins Netzwerk?
Setz mal ein Try...Catch um die betreffenden Zeilen und protokollier die vollständige Fehlermeldung, bspw. in eine Datei.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hey,
Try and Catch habe ich drum gebaut, es kommt aber keine Fehlermeldung.
Der Funktionsaufruf scheint zu funktionieren, aber ich glaube das er nicht darauf wartet und zur nächsten Funktion springt.
Hast du noch eine Idee ?
In einem anderen teil des Dienstes funktioniert das reibungslos.
Allerdings dauert das laden der entsprechenden Cmdlets doch etwas länger, vielleicht bricht das dann irgendwo ab weil er die zweite Funktion anstartet ?
-
Hallo too1234,
bist du sicher, dass das Skript überhaupt von C# aus ausgeführt wird? (Stichwort: Powershell Ausführungsrichtlinie) Nur weil es über manuellen Start in der Konsole läuft, heißt das nicht, dass es auch durch direkten Aufruf gestartet wird. Mehr dazu findest du via Powershell hier: get-help about_signing
Das würde erklären weshalb der Vorgang so schnell abgeschlossen ist.
Gruß Sebastian
-
hallo tool1234,
versuch mal folgender Lösung:
bool working = false; private void funk1() { if (working ) { System.Threading.Thread.Sleep(60 * 1000 ); } else { working = true; // doSomting working = false; } } private void funk2() { if (working ) { System.Threading.Thread.Sleep(60 * 1000 ); } else { working = true; // doSomting working = false; } }
-
****************************************************************************************************************
Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.
Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
****************************************************************************************************************Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.