AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Warten auf ...? MsgWaitForMultipleObjects
Thema durchsuchen
Ansicht
Themen-Optionen

Warten auf ...? MsgWaitForMultipleObjects

Ein Thema von Gast · begonnen am 24. Jul 2003 · letzter Beitrag vom 26. Jul 2003
 
Gast
(Gast)

n/a Beiträge
 
#15

Re: Warten auf ...? MsgWaitForMultipleObjects

  Alt 25. Jul 2003, 22:58
Wie gewuenscht, mein Code:

Delphi-Quellcode:
function MAC_Thread(pml: PMachineList): DWORD; stdcall;
var
  msg: TMsg;
begin
  while True do
    case MsgWaitForMultipleObjects(0, PDWORD(nil)^, False, 5000, QS_ALLEVENTS) of
      WAIT_OBJECT_0:
        if PeekMessage(msg, 0, 0, 0, PM_REMOVE) then
          case msg.message of
            SIGNAL_STOP:
              begin
{$IFDEF DEBUGGING}
                Writeln('MAC: Received STOP.');
{$ENDIF DEBUGGING}
                Exit;
              end;
          else
            DispatchMessage(msg);
          end;
      WAIT_TIMEOUT:
        begin
{$IFDEF DEBUGGING}
          Writeln('MAC: Timeout ... scanning for machines');
{$ENDIF DEBUGGING}
          PostThreadMessage(pml^.Dispatcher, SIGNAL_MACLISTUPD, 0, 0);
        end;
    end;
  result := 0;
end;
Es war tatsaechlich die Sache mit dem Entfernen aus der Queue. Uebrigens, ich bekomme bei 5sec einen Timeout!

Hier noch ein Workerthread:

Delphi-Quellcode:
function WorkerThread(x: Pointer): DWORD; stdcall;
var
  msg: TMsg;
begin
  while True do begin
    if PeekMessage(msg, 0, 0, 0, PM_REMOVE) then
      case msg.message of
        SIGNAL_STOP:
          begin
{$IFDEF DEBUGGING}
            Writeln('WRK: Received STOP.');
{$ENDIF DEBUGGING}
            Exit;
          end;
        SIGNAL_WRKSCANMAC:
          begin
{$IFDEF DEBUGGING}
            Writeln('WRK: Now scanning machine with index ', msg.wParam);
{$ENDIF DEBUGGING}
            DispatchMessage(msg);
          end;
      else
        DispatchMessage(msg);
      end;
    WaitMessage; // lay down to sleep ... until we receive a message
  end;
  result := 0;
end;
  Mit Zitat antworten Zitat
 


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 08:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz