Thema: Delphi Message beim ThreadEnde

Einzelnen Beitrag anzeigen

Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Message beim ThreadEnde

  Alt 12. Apr 2007, 23:36
Ich hab hier noch ein kleines Programm rumliegen, wo ich Windows Messages zur Thread-MainWindow-Komminikation verwendet habe... vielleicht bringt es dir ja was.

Delphi-Quellcode:
//Die eigene Windows-Botschaft. WM_APP + x ist für die Intra-Prozess-Kommunikation gedacht.
const
  WM_THREADUPDATE = WM_APP + 2404;

...
//Das Objekt, das mit lParam übergeben wird.
type
  TThreadMessage = class(TObject)
  private
    FErrorCode: Integer;
    FMessageStr: String;
  public
    constructor Create(ErrCode: Integer; Msg: String);
  published
    property ErrorCode: Integer read FErrorCode write FErrorCode;
    property MessageStr: String read FMessageStr write FMessageStr;
  end;

...
//Versenden der Nachricht aus TThread.Execute
    try
      Response := HTTP.Post(POSTUrl, Formdata);
      PostMessage(MainWindowHandle, WM_THREADUPDATE, 0,
          Integer(TThreadMessage.Create(ERR_OK, Response)));
    except
      on E: Exception do begin
        PostMessage(MainWindowHandle, WM_THREADUPDATE, 0,
            Integer(TThreadMessage.Create(ERR_POST, E.Message)));
       end;
    end;
Delphi-Quellcode:
//Verarbeiten der Nachricht des Threads im Hauptfenster.
  TfrmMain = class(TForm)
    ...
  private
    procedure UpdateView(var Msg: TMessage); message WM_THREADUPDATE;
    ...
  end;

  ...

procedure TfrmMain.UpdateView(var Msg: TMessage);
var
  ThreadMsg: TThreadMessage;
begin
  ThreadMsg := TThreadMessage(Msg.LParam);

  case ThreadMsg.ErrorCode of
    ERR_OK: ...

    ERR_POST: ...
  end;

  ThreadMsg.Free; <-- wichtig
end;
Gruß,
Dani
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat