Ho creato un form che funge da "alert popup" (alla google desktop o msn messenger). All'evento OnShow, viene creato un Thread che dopo 10 secondi dovrebbe far chiudere la popup. E funge bene. Ora il problema è che, all'evento OnClose del popup bisognerebbe distruggere il thread. Il fatto è che se non lo distruggo, il thread continua ad eseguirsi (sballandomi i valori al successivo riavvio del popup), mentre se lo distruggo alla chiusura del popup mi si pianta l'applicazione.Cosa c'è che non va in questo codice?codice:procedure TThreadTimer.Dissolve; var i : byte; begin Timer.Terminate; for i:=255 downto 0 do Popup.AlphaBlendValue := i; // effetto dissolvenza Popup.Close; end; procedure TThreadTimer.Execute; var i: integer; begin i := 0; while true do begin sleep(1000); i := i + 1000; Popup.LblInfo.Caption := IntToStr(10-(i div 1000)); if i = 10000 then Synchronize(Dissolve); end; end; procedure TPopup.FormShow(Sender: TObject); begin AlphaBlendValue := 0; Timer := TThreadTimer.Create(false); Timer.FreeOnTerminate := true; end; procedure TPopup.FormClose(Sender: TObject; var Action: TCloseAction); begin Timer.Destroy; end;![]()