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.

Antwort per Email an