Bonjour,
Dans une DLL réalisée en Delphi 6 Personal Edition, j'ai une fonction qui, entre autres, doit créer un nouveau thread. Et ce thread ne veut pas démarrer sans que je fasse appel à ShowMessage dans la fonction qui crée ce thread ! Si je le fais, le thread demarre correctement et fonctionne. Sinon, il ne démarre jamais. Voici mon code:
Tel quel, le message "TMuThread started" ne s'affiche jamais.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 var th: TMyThread; procedure TMyThread.Execute; begin synchronize(DoProgress); FreeOnTerminate := true; end; procedure TMyThread.DoProgress; begin showmessage('TMyThread started'); end; function TestThread():integer; stdcall; export; begin th := TMyThread.Create(true); th.Resume; // if assigned(th) then showmessage('ok') else showmessage('oups'); result := integer(th); end;
Mais si d'active la ligne "if assigned...", alors mon message apparaît, puis immédiatement, le message "ok" apparaît en se superposant au premier. Je valide "ok", cette boite disparaît et j'ai accès à la boite "TMuThread started" que je peux alors valider à son tour.
J'ai conscience que dans ce code, aucune disposition n'est prise pour terminer le thread correctement. Ceci est intentionnel car je voulais metttre exclusivement le problèe du démarrage en évidence.
Qu'est-ce que je n'ai pas conmpris sur le fonctionnement des Threads ? Qu'est-ce qu'il faut faire pour que le thread démarre ?
Partager