Autor Beitrag
Xcalibur
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37



BeitragVerfasst: Fr 19.08.11 12:24 
Hey,

Ich möchte für sehr viele Rechner im Netzwerk prüfen ob ein bestimmter Prozess aktiv ist.

Mein code sieht bis jetzt so aus:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
            try
            {
                bool activ = false;
                if (Ping(Host))
                {
                    Process[] Processes = Process.GetProcessesByName(Prozessname, Host);
                    if (Processes.Length != 0)
                        activ= true;
                    else
                        activ = false;
                }
                return active;
            }
            catch (Exception)
            {
                return false;
            }


Funktionier auch wunderbar aber es ergibt sich ein Problem.
Wird ein Rechner genau zum Zeitpunkt der Prüfung heruntergefahren (d.h. ping bekommt Antwort)
aber ich bekomme keine Antwort auf meine GetProcessesByName. Diese Funktion versucht ziemlich lange den Process zun finden und
wirft dann eine Exception, die ich nat abfange und dann als Ergebnis false zurückgebe.

Also es funktioniert somit schon aber dadurch ergeben sich lange Wartezeiten da die Exception erst nach fast +/- 10sec geworfen wird.

Kann ich irgendwie nach dem Ping noch eine Eigenschaft prüfen die auskunft darüber gibt ob Windows gerade heruntergefahren wird/ oder ich noch Zugriff auf Prozesse habe?

Gruß Xcalibur
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19273
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 19.08.11 14:04 
Nein, aber was spricht dagegen das alles einfach in Threads zu packen?
Xcalibur Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37



BeitragVerfasst: Mo 22.08.11 08:15 
Das läuft schon in Threads.
D.h. ich lasse immer 75 parallel laufen.
sieht dann so aus das der Ladebalken schnell hochfährt und am Ende noch ca. 5- 10 Threads solange "hängen" bis eben die Exception geworfen wird.

Dachte nur das wenn ich eine elegantere Abfrage habe dieser Ladebalken etwas schöner läuft bzw am Ende nicht auf einmal steht und eine halbe Minute für 10 Rechner brauht obwohl er die 1000 davor in kürzerer Zeit erledigt hat...