Also: folgender Quellcode funktioniert bei mir Zuhause unter (K)ubuntu Gutsy mit Lazarus 0.9.24beta/FPC 2.2.0 nun problemlos (wie gewünscht):
Code: Alles auswählen
unit uFrmMain;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
TSimpleThread = class(TThread)
private
protected
procedure Execute; override;
public
constructor Create;
destructor Destroy; override;
procedure Terminate;
end;
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
aThread: TSimpleThread;
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
constructor TSimpleThread.Create;
begin
FreeOnTerminate:=True;
inherited Create(true);
end;
destructor TSimpleThread.Destroy;
begin
if not Terminated then
Terminate;
inherited;
end;
procedure TSimpleThread.Terminate;
begin
inherited;
if Suspended then
Resume;
end;
procedure TSimpleThread.Execute;
begin
while not terminated do
begin
sleep(5000);
if not terminated then
suspend;
end;
end;
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
aThread:=TSimpleThread.Create;
end;
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
aThread.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
aThread.Resume;
end;
initialization
{$I uFrmMain.lrs}
end.
Mein Arbeitsplatz-PC mit der gleichen Software-Ausstattung, allerdings unter VMware (mit XP als Host), klemmte hingegen an unterschiedlichsten Stellen. Offensichtlich kann ich dem nicht trauen ...
thx, Dets ...