Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi In Thread ein Event starten (https://www.delphipraxis.net/43960-thread-ein-event-starten.html)

Scorpion3000 11. Apr 2005 11:36


In Thread ein Event starten
 
Hallo zusammen!

Ich hab eine kleine Komponente geschrieben, in der ein Thread vorkommt, der wiederrum ein Ereignis ausgibt. Hab allerdings zwei Probleme:
1. bekomme ich für die Überprüfung des Events mit assigned immer true zurück
2. (hängt wahrscheinlich mit 1. Problem zusammen) eine Fehlermedlung "ERROR 5 - Zugriff verweigert"

Delphi-Quellcode:
unit Test;

interface

uses
   SysUtils, Classes, Windows, SyncObjs;

type

   TOnMsgRec = procedure(Sender: TObject) of object;

   TCompoTest = class(TComponent)
   private
      FOnMsgRec: TOnMsgRec;
      procedure ThreadProc;
   public
   protected
   published
      procedure RunTest;
      property OnMsgRecieved: TOnMsgRec read FOnMsgRec write FOnMsgRec;
   end;
   
   var
      ThdH: THandle;
      ThID: cardinal;

procedure TCompoTest.RunTest;
begin
   ThdH:= BeginThread(nil, 100, TFNThreadStartRoutine(@TCompoTest.ThreadProc), nil, 0, ThID);
end;

procedure TCompoTest.ThreadProc;
begin
   if assigned(FOnMsgRec) then // <--- da kommt immer "true" heraus
      OnMsgRec(self); // <-- nun kommt die Fehlermeldung*
end;
end.
(* is irgendwie klar, da ja im Hauptprog dem Event nichts zugewiesen wurde)

Hab die ganze Sache bisschen gekürzt. Es wird allerdings sonst nie das Event OnMsgRec benützt oder geändert.

Vielen Dank für eure Hilfe


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:11 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