Hallo,
in einer Methode habe ich den folgenden Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| ProcessStartInfo PInfo; Process P; PInfo = new ProcessStartInfo(parameter1, parameter2); PInfo.CreateNoWindow = true; PInfo.UseShellExecute = false; P = Process.Start(PInfo); P.WaitForExit(1000); P.Close(); |
Aufgerufen wird die Methode zum Beispiel mit
C#-Quelltext
1:
| StartNetworkProcess("cmd", @"net use \\" + IP + @"\Test /USER:test 123"); |
Die Methode selbst funktioniert auch wie gewünscht. Es gibt dabei nur leider zwei Fälle, die Probleme bereiten.
Fall 1: Netzwerkrechner ist per Ping erreichbar, aber der Zugriff wird verweigert
Fall 2: Netzwerkrechner ist gar nicht erreichbar
Mit einem Ping kann ich zwar auf den Fall 2 vorab reagieren, aber das dauert ziemlich lang.
Fall 1 prüfe ich derzeit mit einem
C#-Quelltext
1:
| Directory.Exists(folder) |
ab. Dabei übergebe ich ein Verzeichnis, das es auf allen möglichen Netzwerkrechnern garantiert gibt. Im Erfolgsfall geht das auch ganz flott, aber in geschilderten Fall 1 dauert es ewig (mindestens 10 Sekunden) bis Directory.Exists ein false zurück liefert. Der Grund ist wahrscheinlich weil Net Use solange für einen Timeout braucht.
Jetzt die Frage an alle Experten:
Lässt sich hier irgendwas beschleunigen oder gibt es eine schnellere Methode? Vielleicht timeout herabsetzen oder Ping-Zeit verkürzen.
Vielen Dank schon einmal im Voraus für eure Hilfe.
Scofield2011]