Autor Beitrag
Scofield2011
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55

Windows XP, Windows 7, Windows 8
C#, VBA, VB
BeitragVerfasst: Do 05.09.13 19:10 
Hallo,

in einer Methode habe ich den folgenden Code:

ausblenden 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

ausblenden 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

ausblenden 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]