Einzelnen Beitrag anzeigen

R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Nachrichten an Thread senden

  Alt 21. Jan 2010, 07:25
Hi,
vielleicht kann mir jemand sagen wo mein Fehler liegt.

Hier wird der Thread erzeugt und die Botschaft gesandt:
Delphi-Quellcode:
  SET_INTERTHREAD_TRA = WM_USER+12;
....
procedure TForm1.Button1Click(Sender: TObject); //<--------------damit erzeuge ich den thread
begin
  statethread := TStateThread.Create(True);
  statethread.FreeOnTerminate := True;
  statethread.call_handle:=statethread.Handle;
  statethread.Resume;
end;

procedure TForm1.Button3Click(Sender: TObject);//<-------------------damit sende ich eine Botschaft
begin
  PostMessage( statethread.Handle, SET_INTERTHREAD_TRA,1, 0 );
  //PostThreadMessage( statethread.handle, SET_INTERTHREAD_TRA,1, 0 );
end;
Der Thread:
Delphi-Quellcode:
unit Ustatethread;

interface

uses
  //Classes, control_def, Messages, Ucomthread;
  windows, classes, sysutils, extctrls, forms, OoMisc, AdPort, control_def,
  U_hexa, strutils, Ucomthread, Messages,dialogs;

type
  Tstatethread = class(TThread)
  private
    { Private-Deklarationen }
    bRunning:boolean;

  public
    call_handle:HWND;
    procedure stop;
   protected
    procedure Execute; override;
  end;

implementation

//***************************************************************************
//Name: stop;
//Designed by: Rainer Unger 2010
//Procedure/Function: stop thread
//Input: none
//Output: destroyed thread
//Revision: Initial 20.01.2010
//***************************************************************************
procedure Tstatethread.stop;
begin
  brunning:=false;
end;

procedure Tstatethread.Execute;
var a:string;msg:Tmsg;
begin
  bRunning:=true;

  while (bRunning = true) do
    begin
    if peekMessage(msg,0,0,0,0) then //warten auf Message
      begin
        DispatchMessage(msg); //<----------------------hier müsste ich eigentlich irgenwann mal ankommen. Hab Breakpoint gesetzt.
      end;
    end;
end;

end.
Ich weiss, dass die Art den Thread zu stoppen nicht optimal ist aber darum geht es nicht.

Grüsse
Rainer
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat