Je vous écris car je progresse petit à petit en C# mais là je suis cofronté à un problème que je n'arrive pas à résoudre.
Mon programme affiche aléatoirement des images pendant 2 secondes puis affiche un fond blancau bout des 2 secondes. Quand l'utilisateur appuie sur Espace, l'image suivante s'affiche etc... Tout ceci s'affiche dans une PictureBox.
Mon problème est le suivant : aléatoirement, j'ai une exception qui arrête le programme, me met en surbrillance la dernière ligne de code suivante pictureBox1.Image = croix; du code suivant :
public
void Affichage_Image_Load(
object sender,
EventArgs e){
Code =
"Croix";
// On affiche la croix centrale pictureBox1.Image = croix;
}
// Fonction pour tirer aléatoirement l'indice d'une image SANS REMISE
public
void Valea(
ArrayList list,
out
int valeur){
valeur = 0;
// On trouve l'indice du dernier élément du tableau
int LastElementIndex = list.Count-1;
// On trouve un indice aléatoire dans le nombres d'indices possibles
int index = RandomClass.Next(0, LastElementIndex);
// On retient la valeur aléatoire tirée valeur = (
int)list[index];
// On remplace la valeur contenue à l'indice tirée par celle
// du dernier élément du tableau list[index] = list[LastElementIndex];
// On retire le dernier élément du tableau list.RemoveAt(LastElementIndex);
}
// Code pour déclencher l'affichage de l'image en pressant Espace
Puisque tu sembles être dans une Form, tu peux utiliser un System.Windows.Forms.Timers si le contexte si prête.
Ca devrait t'éviter ce genre de problème ^^
C'est un peu différent, mais tu peux en principe faire la même chose.
Pour le Elapsed, l'équivalent est Tick, pour l'autoReset, je ne sais plus par coeur ce que ça fait, mais faire un Start/Stop pouRRait provoquer un fonctionnement similaire...
Cependant, je ne vois pas où mes opérations peuvent se croiser puisque mon Elapsed s'effectue après l'écoulement d'un timer et que, à la fin du timer, je remplace seulement l'image d'une picturebox par une autre....
Je ne vois donc pas comment appréhender le pb dont tu me parles sur mon programme et donc encore moins pour utiliser les commandes begininvoke etc...je suis un peu perdu là lol
J'ai mis en place ta proposition, en mettant le nouveau type de Timer que tu me proposais et j'ai effectivement pu trouver le Tick pour remplacer Elapsed, ainsi que start et stop pour gérer le autoreset !!
et bilan des courses.....ça fonctionne parfaitement, sans erreur, sans exception levée !!!!!!
Merci bcp bcp tu m'enlève une grosse épine du pied!
Merci bcp et à charge de revanche (même si je ne vois pas en quoi je pourrais t'aider vues nos différences de nivaux en prog lol)!