Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
Delphi 2007 Professional
|
Re: Nachrichten an Thread senden
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.
|
|
Zitat
|