Utilisateur anonyme
-
19 mai 2006 à 10:16
Utilisateur anonyme -
19 mai 2006 à 11:16
Bonjour,
Pour la premiere fois, j'utilise les threads alors, pour me faire la
main j'ai fait un petit programme pour voir comment ca fonctionne, j'ai
compris, ca n'est pas bien complique. J'ai donc refais la meme chose
dans mon application mais la...je ne comprends pas, le compilateur me
genere une erreur comme quoi le Thread en question serait null lorsque je fais "Thread.Abort();". Voici le code qie j'utilise :
using System;
using System.Threading;
using System.Windows.Forms;
namespace Project
{
public class Threads
{
// Declaration of all the threads for being accessible in all the class
public Thread video1;
public Threads ()
{
}
public void StartThreads (bool cam1)
{
if (cam1==true)
{
video1 = new Thread(new ThreadStart(AnalysePicture));
video1.Start();
}
}
public void StopThreads ()
{
// C'est ici que l'instruction Abort ne fonctionne pas
try
{
video1.Abort();
MessageBox.Show("Arret du thread");
}
catch(Exception ex) { MessageBox.Show("" + ex); }
}
private void AnalysePicture ()
{
while (true)
{
// C'est ici que le thread travaille
Thread.Sleep(1000);
}
}
}
}
Je ne sais pas ce qui peut etre deffectueux (peut etre moi ?) mais il
me semble bien avoir fait exactement pareil dans une autre class.
L'intitule exact de l'erreur est :
System.NullReferenceException : Object reference not set to an instance of an object.
Merci d'avance pour toute aide qui pourrait m'etre apportee.
Aucun probleme pour lancer le thread, je lance bien le thread puisque
pour tester, je lancais une message box dans mon thread qui m'indiquait
l'etat de celui-ci (toutes les secondes). Celui etait tout le temps
running et lorsque je voulais l'arreter, il faisait l'erreur que
j'indiquais dans le message precedent.
J'ai modifie mon code comme ceci :
public Threads ()
{
video1 = new Thread(new ThreadStart(AnalysePicture)); }
public void StartThreads (bool cam1)
{
if (cam1==true)
{
video1.Start();
}
}
Maintenant, je n'ai plus cette erreur mais cette fois c'est le
thread qui ne veut pas s'arreter alors que la methode StopThreads est
bien appelee (affichage d'une message box). Alors ma nouvelle question
est la suivante, comment se peut il que ce code s'execute sans pour
autant arreter le thread ?
public void StopThreads ()
{
// C'est ici que l'instruction Abort ne fonctionne pas
try
{
video1.Abort();
MessageBox.Show("Arret du thread");
}
catch(Exception ex) { MessageBox.Show("" + ex); }
}
Vous n’avez pas trouvé la réponse que vous recherchez ?