AGB  ·  Datenschutz  ·  Impressum  







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

Nachrichten an Thread senden

Ein Thema von R2009 · begonnen am 21. Jan 2010 · letzter Beitrag vom 21. Jan 2010
Antwort Antwort
R2009

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

Re: Nachrichten an Thread senden

  Alt 21. Jan 2010, 06: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
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 03:52 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