Bonjour,
J'ai un problème avec mon application.
J'ai créé un process qui indexe un fichier MPEG2. Malheureusement, cela prend plusieurs dizaines de minutes et demande 100 % du processeur. L'utilisateur peut suivre l'évolution de son indexation grâce à une progress bar dans la barre d'état mais ne doit en aucun cas toucher son interface. Le problème est que s'il clique quand même avec sa souris ou s'il change d'application (perte de focus), le programme perd son menu principal (barre blanche), la progress bar est stoppée et le programme ne répond plus. Le programme tourne toujours mais l'interface est morte.
J'ai essayé dans un premier temps de rendre l'interface disable : AfxGetMainWnd->EnableWindow(FALSE) puis de la rafraichir de temps en temps : AfxGetMainWnd->UpdateWindow().
Ce procédé fonctionne très bien en debug et en release. Malheureusement, son utilisation ne donne absolument rien (comme si le code était inexistant) lorsque je lance directement l'exécutable dans le répertoire "Release".
J'utilise Visual .NET 2003.
J'ai aussi essayé de threader mon appli pour avoir un peu plus de ressource proc.
Ce que je ne comprends pas, c'est ce procédé qui fonctionne en release avec visual mais pas en double cliquant directement sur l'exe.
J'ai l'impression qu'alors, tous les messages de rafraichissement son bloqués.
Auriez vous une solution pour moi ou une façon de forcer les messages de rafraichissement?
Merci d'avance
Partager