IHM Thread PostMessage GPF
Bonjour à tous, c'est encore moi :lol:
Je viens vers vous pour un problème de manipulation d'IHM à travers un thread. Je sais bien que c'est déconseillé de manipuler directement des champs dans un thread secondaire, j'ai donc voulu mettre en place des événements pour demander au thread principale de manipuler les champs.
Le but étant d'alimenter toutes les 10ms des jauges affichant le volume sonore (statique et dynamique) à un instant T d'un morceau de musique par le biais de bass.dll.
Je déclare donc mes événements :
Code:
1 2 3
|
Evénement(GENERAL_Jauge_Level, "*.*", "Jauge_Level")
Evénement(GENERAL_Jauge_Peak, "*.*", "Jauge_Peak") |
Les 2 procédures locales :
Code:
1 2 3 4 5 6 7 8
|
PROCEDURE GENERAL_Jauge_Level(nParam est un entier, Level est un entier)
JAUGE_Volume_Gauche_R1 = Level
PROCEDURE GENERAL_Jauge_Peak(nParam est un entier, Peak est un entier)
JAUGE_Crete_Gauche_R1 = Peak |
La procédure du thread secondaire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
PROCEDURE Record_Deroulement(Stream est un entier)
Level est un entier
Peak est un entier
Memo_Level est un entier
BOUCLE
SI Stream <> 0 ALORS
// LEVEL
Level = Max(PoidsFaible(BASS_ChannelGetLevel(Stream)), PoidsFort(BASS_ChannelGetLevel(Stream)))
// PEAK LEVEL
SI Level > Memo_Level ALORS
Peak = Level
FIN
Memo_Level = Level
PostMessage(Handle(FEN_Enregistreur), "Jauge_Level", Level, Level)
PostMessage(Handle(FEN_Enregistreur), "Jauge_Peak", Peak, Peak)
FIN
ThreadPause(10)
FIN |
Ai-je mal codé quelques choses ? Car systématiquement, au bout de quelques minutes, j'ai le droit à un jolie Access Violation GPF :( Alors que le but est d'éviter ça !
Et je ne sais pas vraiment d'où peut venir le problème car j'ai pour erreur "Pile invalide" donc pas de ligne de code précisée... Mais le thread fonctionne parfaitement sans les PostMessage :s
J'ai tous ses messages dans l'observateur d’événements :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
Récipient derreurs INVALID_REQUEST, type 0
Nom dévénement*: Crash PCS EXE
Réponse*: Non disponible
ID de CAB : 0
Signature du problème :
P1 :
P2 :
P3 :
P4 :
P5 :
P6 :
P7 :
P8 :
P9 :
P10 :
Fichiers joints*:
C:\Users\Kyle\AppData\Local\Temp\CXEE3C8.tmp.txt
Ces fichiers sont peut-être disponibles ici*:
C:\Users\Kyle\AppData\Local\Microsoft\Windows\WER\ReportArchive\Critical_0_0_00000000_1425e84c
Symbole danalyse :
Nouvelle recherche de la solution : 0
ID de rapport : 35a10249-4d9f-11e4-8271-90e6ba564153
Statut du rapport : 0
Récipient avec hachage*:
Nom de lapplication défaillante wdtst.exe, version : 16.0.12.0, horodatage : 0x4d7a166c
Nom du module défaillant : KERNELBASE.dll, version : 6.3.9600.17278, horodatage : 0x53eeb460
Code dexception : 0xe06d7363
Décalage derreur : 0x00012f71
ID du processus défaillant : 0xf48
Heure de début de lapplication défaillante : 0x01cfe1a975adcf5a
Chemin daccès de lapplication défaillante : C:\WinDev 16\Programmes\wdtst.exe
Chemin daccès du module défaillant: C:\Windows\SYSTEM32\KERNELBASE.dll
ID de rapport : 37b01d4a-4d9f-11e4-8271-90e6ba564153
Nom complet du package défaillant*:
ID de lapplication relative au package défaillant*:
Récipient derreurs , type 0
Nom dévénement*: Crash PCS EXE
Réponse*: Non disponible
ID de CAB : 0
Signature du problème :
P1 :
P2 :
P3 :
P4 :
P5 :
P6 :
P7 :
P8 :
P9 :
P10 :
Fichiers joints*:
C:\Users\Kyle\AppData\Local\Temp\CXEE3C8.tmp.txt
Ces fichiers sont peut-être disponibles ici*:
Symbole danalyse :
Nouvelle recherche de la solution : 0
ID de rapport : 35a10249-4d9f-11e4-8271-90e6ba564153
Statut du rapport : 262144
Récipient avec hachage*:
Récipient derreurs 73566500776, type 1
Nom dévénement*: APPCRASH
Réponse*: Non disponible
ID de CAB : 0
Signature du problème :
P1 : wdtst.exe
P2 : 16.0.12.0
P3 : 4d7a166c
P4 : KERNELBASE.dll
P5 : 6.3.9600.17278
P6 : 53eeb460
P7 : e06d7363
P8 : 00012f71
P9 :
P10 :
Fichiers joints*:
C:\Users\Kyle\AppData\Local\Temp\WERF607.tmp.WERDataCollectionFailure.txt
Ces fichiers sont peut-être disponibles ici*:
C:\Users\Kyle\AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_wdtst.exe_5d8a5260415c6d507af672aea9eaf6b691b15866_83af85fe_0db9f607
Symbole danalyse :
Nouvelle recherche de la solution : 0
ID de rapport : 37b01d4a-4d9f-11e4-8271-90e6ba564153
Statut du rapport : 4104
Récipient avec hachage*: 441e3ca4b61bf17a6468a6d09befcdd7
Récipient derreurs , type 0
Nom dévénement*: APPCRASH
Réponse*: Non disponible
ID de CAB : 0
Signature du problème :
P1 : wdtst.exe
P2 : 16.0.12.0
P3 : 4d7a166c
P4 : KERNELBASE.dll
P5 : 6.3.9600.17278
P6 : 53eeb460
P7 : e06d7363
P8 : 00012f71
P9 :
P10 :
Fichiers joints*:
Ces fichiers sont peut-être disponibles ici*:
C:\Users\Kyle\AppData\Local\Microsoft\Windows\WER\ReportQueue\AppCrash_wdtst.exe_5d8a5260415c6d507af672aea9eaf6b691b15866_83af85fe_0351f27d
Symbole danalyse :
Nouvelle recherche de la solution : 0
ID de rapport : 37b01d4a-4d9f-11e4-8271-90e6ba564153
Statut du rapport : 4100
Récipient avec hachage*: |
Merci.