Bonjour,
j'ai un problème bizarre, lorsque mon programme reçoit le message WM_CLOSE il se ferme même si j'ai des fenêtres en attente d'une réponse avec ShowModal.
Mais j'ai ce code dans un thread de mise à jour :
je l'appelle avec la procédure Synchronize(SyncroMsgNew);lorsque mon programme reçoit le message close, la fenêtre ne se ferme pas, mais mon programme réagit puisque onclosequery de la form principal est exécuté puis le programme se fige, car j'affiche une fenêtre modal pour le traitement des actions longues et à ce moment-là le programme se bloque.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Procedure TThreadUpdater.SyncroMsgNew; Begin fmNewVersion:= TfmNewVersion.Create(fmMain) ; Try If fmNewVersion.ShowModal = mrOk Then FDownUpdate := True; Finally FreeAndNil(fmNewVersion); End; End;
Je ne comprends, je croyais que le code envoyé avec Synchronize passait dans le thread principale et se comporte comme n'importe quelle autre code mais apparemment ce n'est pas le cas puisque cette fenêtre ne veut pas se fermer, j'ai essayé sans succès de mettre ceci dans le onclosequery de ma form principal avant le lancement des actions avec la fenêtre modal afin de détecter si ma fenêtre est ouverte et de la fermer
Je ne comprends pas quel est le problème, merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if Assigned(fmNewVersion) then begin fmNewVersion.ModalResult:= mrCancel; fmNewVersion.Close; end;
Partager