Schönen guten Tag,
ich habe meinen 1. Dienst geschrieben, der in gewissen Intervallen, ein Programm ausführt. Die Intervall kommen aus einer Ini-Datei und stehen im Array "check". Alles funktioniert wunderbar. Nur das die CPU Auslastung auf 100% ist. Setze ich den Wert bei ServiceThread.ProcessRequests(False) auf TRUE, ist die Lastung nicht mehr da aber er macht auch nichts mehr bzw. es wird erst was ausgeführt wenn ich den Dienst stoppe.
GROßES FRAGENZEICHEN???? Was kann ich machen und was muss ich umstellen?
Mein Code für den Execute Teil:
Delphi-Quellcode:
procedure TC3000Service.ServiceExecute(Sender: TService);
var
i, tag : Integer;
begin
while not Terminated do
begin
ServiceThread.ProcessRequests(False);
tag := DayOfWeek(now);
// Kontrolle des Tages
if wtag[tag] = 1 then
begin
// Kontrolle, ob ausgeführt werden soll in Abhängigkeit von der Zeit
for i := Low(check) to High(check) do
begin
if check[i].zeit = '' then // verhindert, dass alle Arrayeinträge durchlaufen werden
break;
if check[i].zeit = FormatDateTime('hh:mm',now) then
begin
if check[i].email = TRUE then
ExecuteFile(AppPath+'ParamterUebergabe.exe', '/global /email', '', TRUE, SW_NORMAL)
else
ExecuteFile(AppPath+'ParamterUebergabe.exe', '/global', '', TRUE, SW_NORMAL);
// Service wird solange angehalten, bis eine neue Minute angebrochen ist
while check[i].zeit = FormatDateTime('hh:mm',now) do
begin
Sleep(1000);
end;
end;
end;
end;
end;
end;
Nur noch das Problem und ich habe meinen 1. Service fertig.
Vielen Dank im voraus.
Sven