AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Rechenzeit zurückgeben

Ein Thema von gbl · begonnen am 7. Aug 2005 · letzter Beitrag vom 8. Aug 2005
Antwort Antwort
gbl

Registriert seit: 21. Aug 2004
18 Beiträge
 
#1

Rechenzeit zurückgeben

  Alt 7. Aug 2005, 15:06
Hallo,

Ich programmiere gerade einen Dienst. Leider verbaucht der Dienst auch 100% CPU Zeit. In einer GUI Anwendung kann ich mit
  App.ProcessMessages; die Rechenzeit an das System zurückgeben.
Leider steht mir die Klasse App in meiner Anwendung nicht zur Vverfügung.

Der Relevante Codeteil:
Delphi-Quellcode:
procedure ProcessMessages(hWnd: DWORD);
var
  Msg: TMsg;
begin
  while PeekMessage(Msg, hWnd, 0, 0, PM_REMOVE) do
    begin
      TranslateMessage(Msg);
      DispatchMessage(Msg);
    end;
end;

PROCEDURE SERVICE_MAIN;
BEGIN
  REPEAT
    IF NOT paused THEN
    BEGIN
      ProcessMessages(0);

      if SecondsBetween(time, time0)>=timedelta then
      begin
        Windows.Beep(2000, 250);
        time0:=time;
      end;
    END;
  UNTIL stopped;
END;
Mir ist klar, daß das Handle 0 nicht gültig ist. Hat jemand eine Idee wie ich die CPU Zeit runter bekomme?
______________________________________
cu.
Günter
  Mit Zitat antworten Zitat
Joachim Rohde

Registriert seit: 20. Jun 2004
24 Beiträge
 
#2

Re: Rechenzeit zurückgeben

  Alt 7. Aug 2005, 15:46
Das liegt an der PeekMessage-Funktion. Kannst du nicht die GetMessage-Funktion verwenden?
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

Re: Rechenzeit zurückgeben

  Alt 8. Aug 2005, 06:16
Zitat von Joachim Rohde:
Das liegt an der PeekMessage-Funktion. Kannst du nicht die GetMessage-Funktion verwenden?
Borland verwendet aber auch diese Funktion
(Und zwar mit einer konstanten 0 wo gbl hWnd (Parameter = 0) benutzt.)

Quelltextauszug aus Forms.pas:
Delphi-Quellcode:
{*******************************************************}
{                                                       }
{       Borland Delphi Visual Component Library         }
{                                                       }
{  Copyright (c) 1995-2002 Borland Software Corporation }
{                                                       }
{*******************************************************}
...
function TApplication.ProcessMessage(var Msg: TMsg): Boolean;
var
  Handled: Boolean;
begin
  Result := False;
  if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
  begin
    Result := True;
    if Msg.Message <> WM_QUIT then
    begin
      Handled := False;
      if Assigned(FOnMessage) then FOnMessage(Msg, Handled);
      if not IsHintMsg(Msg) and not Handled and not IsMDIMsg(Msg) and
        not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then
      begin
        TranslateMessage(Msg);
        DispatchMessage(Msg);
      end;
    end
    else
      FTerminate := True;
  end;
end;

procedure TApplication.ProcessMessages;
var
  Msg: TMsg;
begin
  while ProcessMessage(Msg) do {loop};
end;
...
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
gbl

Registriert seit: 21. Aug 2004
18 Beiträge
 
#4

Re: Rechenzeit zurückgeben

  Alt 8. Aug 2005, 07:12
Danke vorerst Euch beiden.

Ich habe eine Workarrount für mein Problem gefunden. Im Sinne des Befehles SLEEP sage ich dem Programm einfach nichts zu tun. Für meine Zwecke reicht es.

Delphi-Quellcode:
PROCEDURE SERVICE_MAIN;
BEGIN
  REPEAT
    IF NOT paused THEN
    BEGIN
      sleep(10);

      if SecondsBetween(time, time0)>=timedelta then
      begin
        Windows.Beep(2000, 250);
        time0:=time;
      end;
    END;
  UNTIL stopped;
END;
______________________________________
cu.
Günter
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz