Hallo,
ich habe ein ziemlich nerviges Problem... ich habe während einer
VCL Entwicklung festgestellt, dass sich das Programm mitsamt Delphi
IDE schließt - ohne jegliche Fehlermeldung.
Für dieses Projekt (da hier ein besonderer Wert auf Abwärtskompatibilität gelegt werden muss) nutze ich Delphi 6 und Windows 2000 SP4.
Folgenden Quellcode habe ich erzeugen können, der das Problem reproduziert. Es sind viele andere Variationen möglich, aber alle haben sie gemein, dass in einem OnTimer-Ereignis ein Thread aufgerufen wird.
Delphi-Quellcode:
{ TMySendingThread }
type
TMySendingThread = class(TThread)
protected
procedure Execute; override;
end;
procedure TMySendingThread.Execute();
begin
end;
{ TForm2 }
procedure TForm2.FormCreate(Sender: TObject);
begin
x := TTimer.Create(Self);
x.Interval := 100; // Desto kürzer die Zeit, desto schneller stürzt Delphi ab
x.OnTimer := MyTimer;
end;
procedure TForm2.MyTimer(Sender: TObject);
var
z: TThread;
begin
// Dieser Thread bringt Delphi nach mehreren Timer-Ereignissen zum Absturz!
// (Obwohl der Thread ja gar nix macht!)
// Im Debugger schließen sich die Anwendung UND Delphi einfach so (Delphi 6, Windows 2000 SP4)
// Keine Fehler-Meldung und auch Delphi fragt nicht, ob man den Quelltext speichern will etc
// Außerhalb des Debuggers gibt es keine Auffälligkeiten. Anwendung und Windows laufen stabil
z := TMySendingThread.Create(true);
z.FreeOnTerminate := true;
z.Resume;
end;
end.
Starte ich die Anwendung außerhalb des Debuggers scheint alles unauffällig zu sein. Betriebssystem und Anwendung laufen stabil.
Lediglich Delphi schließt sich (Egal ob der Quelltext gespeichert wurde oder nicht!) einfach so, wenn die Anwendung im Debugger gestartet wird.
Tritt das Problem bei neueren Delphi Versionen auch auf? Ist es ein Delphi-Bug? Oder stoße ich durch den Thread im Timer gegen irgendwelche Betriebssystem-Grenzen/Bugs?
Über Hinweise wäre ich sehr Dankbar.
Gruß
blackdrake