Guten Tag,
mein Programm führt mehrer Threads (ca. 60) aus, um den Onlinestatus mehrerer Computer zu prüfen. Funktioniert auch wunderbar. Nun möchte ich aber wissen wenn alle Threads fertig abgearbeitet sind. Kenne mich mit dem Thema nicht so aus und weiß nicht wirklich wie ich es umsetzen kann.
Wäre für jede Unterstützung dankbar.
Mein Thread
Unit:
Delphi-Quellcode:
procedure MyThread.Execute;
begin
try
{ Thread-Code hier einfügen }
if IsHostAlive(Server) = True
then
begin
if AppStart = True
then
frm_main.lv_server.Items[id].ImageIndex := 1
//Server Online
else
if status = 1
then
frm_main.lv_server.Items[id].ImageIndex := 1
//Server Online
else
begin
frm_main.lv_server.Items[id].ImageIndex := 1;
//Server Online
ShowMessage('
Server Online');
end;
end
else
if AppStart = True
then
frm_main.lv_server.Items[id].ImageIndex := 2
//Server Offline
else
if status = 2
then
frm_main.lv_server.Items[id].ImageIndex := 2
//Server Online
else
begin
frm_main.lv_server.Items[id].ImageIndex := 2;
//Server Online
ShowMessage('
Server Offline');
end;
except
on e:
exception do begin
// mache hier irgendetwas mit dem Fehler.
end;
end;
end;
Aufruf aus dem Hauptprogramm
Delphi-Quellcode:
procedure Tfrm_main.ServerOnlineCheck(AppStart : Boolean);
var
Thread : MyThread;
i : Integer;
begin
for i := 0 to lv_server.Items.Count - 1 do
begin
// Anwendung aktualiseren
Application.ProcessMessages;
Thread := MyThread.Create(True);
Thread.Server := lv_server.Items[i].Caption;
Thread.id := i;
Thread.status := lv_server.Items[i].ImageIndex;
Thread.AppStart := AppStart;
Thread.FreeOnTerminate := True;
Thread.Resume;
end;
lbl_overview_servercheck.Caption := FormatDateTime('dd. mmmm yyyy hh:nn:ss',now)
end;
Schon mal Danke im voraus.
Gruß, Sven