Euh ! tu te contredis ! tu n'as pas vu la différence ?
Sinon, ton thread, il est un peu court non ?
Ta fenêtre s'affiche et pouf le thread, il s'arrête !
ça doit faire mal, la fenêtre est encore là ???
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| void __fastcall TMonThread::Execute()
{
Form2-> Show();
try
{
while (BooleanGlobalQuiDitQueLeTraitementTourne) // pas besoin de SC pour ce genre de valeur
{
PumpMessages(); // Moins brutal que Application.ProcessMessages(); // A Tester SANS !
Sleep(1);
}
}
__finally
{
Form2-> Hide();
}
} |
Désolé, je n'ai pas encore fait ça en C++, donc voici ce que j'ai déjà fait en Delphi
Ajoute PumpMessages si besoin !
Code:
1 2 3 4 5 6 7 8 9
| procedure PumpMessages;
var
Msg: TMsg;
begin
while PeekMessage(Msg, 0, 0, 0, pm_Remove) do begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end; |
Et puis Show ce n'est pas bloquant !
Tu peux l'utiliser SANS thread !
Autre Question :
Ton traitement est une boucle que tu as faite ou un traitement bloquant extérieur (SQL de plusieurs minutes, Exe externe, DLL, ...) ?
Tu devrais lancer le traitement dans le thread secondaire et laisser la progression dans le thread principal (avec PostThreadMessage tu peux faire des choses sympas !)