Ich habe eine Hintergrundroutine, die eigenständig diverse Eingaben
mit dem Datenbestand abgleicht. Da das mitunter etwas auern kann, habe
ich das in einen Thread gepackt und lasse den nebenher arbeiten.
Damit bei Neueingaben die laufende Überprüfung nicht mit
überholten Daten weiter durchläuft, gibt es bei mir folgenden Code:
if Butler.bs.IsRunning then
Butler.bs.Abbruch=true//ein Flag, das im Run.Event
regelmäßig abgefragt wird
ti=ticks+300
do
if Butler.bs.IsRunning=false or Ticks>ti then
exit
end
loop
butler.bs.Kill
end
if Butler.bs.IsRunning=false then
Butler.bs.Run //<----------------- Problemstelle
end
Eigentlich hatte ich erwartet, dass durch IsRunning=false sicher
gestellt ist, dass der Thread nicht läuft. Dennoch bekomme ich
gelegentlich an der gekennzeichneten Stelle eine
ThreadAlreadyRuning-Exception :-(
Offensichtlich mache ich etwas wesentliches falsch.
Wie sollte ich es korrekter Weise machcen, damit der Thread gestoppt
wird und ich mit neuen Parametern erneut einen Run aufrufen kann?
MfG, Metti.