Hallo,
in einem Projekt das ich aus Delphi 7 in XE2 portiert habe, erzeuge und starte ich einen Thread so:
Delphi-Quellcode:
//Thread erzeugen
MD_Thread := TDatenThread.Create;
//Priorität festlegen
MD_Thread.Priority := tpNormal;
//Thread nach dem Freigeben selbstständig löschen lassen
MD_Thread.FreeOnTerminate := true;
//Thread starten
MD_Thread.Resume;
Unter XE2 wird "Resume" als veraltet angewarnt und man solle "Start" benutzen".
Wenn ich aber nun "Resume" durch "Start" tausche, dann erhalte ich eine
Exception:
Zitat:
---------------------------
Benachrichtigung über Debugger-
Exception
---------------------------
Im Projekt NCUpgradeReader.exe ist eine
Exception der Klasse EThread mit der Meldung 'Start kann für einen laufenden oder unterbrochenen Thread nicht aufgerufen werden' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Klick ich dann auf "Fortsetzen" so läuft der Thread an und alles wird wie gewohnt abgearbeitet.
Nun frag ich mich, warum das Start eine
Exception schmeisst?
Da bleib ich dann doch lieber bei "Resume".
[Edit]
Argl!
Im constructor von TDatenThread war
create(false)
drin.
Deswegen wurde der Thread sofort gestartet. Dann muss er natürlich bei "Start" eine
Exception schmeissen
Delphi-Quellcode:
constructor TDatenThread.Create;
begin
inherited Create(false);
//StringList erzeugen
end;