Autor Beitrag
OL-Langer
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 21.10.02 21:02 
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var hEve : THandle;
begin
   hEve := CreateEvent(nil,False,False,'TEST');
  ...
...
...
...
   WaitForSingleObject(hEve,INFINTE);

ab hier geht nix mehr bis das ereigniss ausgelöst wurde. selbst wenn ich einen extra thread starte geht nix mehr, werde noch wahnsinnig, hoffe ihr habt nee Lösung für mich
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mo 21.10.02 21:25 
Was erwartest du denn von einer Funktion die WarteAufEinzelnesObjekt(hEv, unendlich) heißt?

probiere es mal so:
ausblenden Quelltext
1:
2:
while WaitForSingelObject(hEve, 100) = WAIT_TIMEOUT do
  Application.ProcessMessages;

Damit reagiert deine Anwendung noch, während jedoch gewartet wird.

_________________
Ist Zeit wirklich Geld?
OL-Langer Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 21.10.02 22:08 
:D
Okay danke dir ,aber wieso hängt meine ganze anwendung wenn ich in einem extra thread warte ?? Nur um was zu lernen
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mo 21.10.02 22:56 
Das kann ich dir nicht beantworten, da bei mir dieses Phämomen nicht auftritt.
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
type
  TMyThread = class(TThread)
  protected
    procedure Execute; override;
  end;

function MyThread(Param: Pointer): Integer;
var hEve : THandle;
begin
  hEve := CreateEvent(nil,False,False,'TEST');
  WaitForSingleObject(hEve, INFINITE);
  ShowMessage('Hallo');
  Result := 0;
end;

procedure TMyThread.Execute;
begin
  MyThread(0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var ThreadId: THandle;
begin
//  BeginThread(nil, 0, MyThread, nil, 0, ThreadId);
  with TMyThread.Create(False) do
    FreeOnTerminate := True;
end;

_________________
Ist Zeit wirklich Geld?
OL-Langer Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 22.10.02 20:37 
Okay du nimmst nee thread unit (also Klasse von TTHREAD) ... vielleicht sollte ich das auch so machen , habe nee procedure gemacht und die mit CreateThread (Procedure als pointer übergeben) erzeugt und in der gewartet , werde es mal testen ,danke für die Gute Hilfe

Gruss OLI
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Di 22.10.02 22:14 
CreateThread solltest du nicht verwenden. Dazu hat Borland die Funktion BeginThread eingeführt, die die Speicherverwaltung threadsicher macht.
In meinem Code habe ich beides verwendet BeginThread und TThread. Du musst nur das '//' vor dem BeginThread entfernen und die TThread-Abhängigen Sachen auskommentieren.

_________________
Ist Zeit wirklich Geld?
OL-Langer Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 23.10.02 22:30 
Ja danke dir :)) habe es verstanden

Gruss OLI