clairenes
Messages postés24Date d'inscriptionlundi 8 août 2005StatutMembreDernière intervention30 août 2005
-
8 août 2005 à 18:46
clairenes
Messages postés24Date d'inscriptionlundi 8 août 2005StatutMembreDernière intervention30 août 2005
-
9 août 2005 à 09:44
bonjour tout le monde!
je commence juste avec la notion des threads et je ne comprends pas
pourquoi apres ce code la mon thread reste a l'etat unstarted.
ThreadArgs ta = new ThreadArgs(MaConnection);
Thread t = new Thread(new
ThreadStart(ta.ChargementDataSet));
MessageBox.Show("etat1 du thread :
"+t.ThreadState);
t.Start();
MessageBox.Show("etat2 du thread : "+t.ThreadState);
----------------------------------------------
public class ThreadArgs
{
public OracleConnection MaConnection;
public static DataSet ds;
public ThreadArgs(OracleConnection _MaConnection)
{
MaConnection = _MaConnection;
}
public void ChargementDataSet()
{
}
il rentre bien dans la fonction qu'il a en parametre mais le thread reste a son etat initial, jamais il ne passe sur running.
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 8 août 2005 à 19:19
Salut, il est normalement Unstarted avant Start( ) il est Running dans la fonction et Stopped au retour de la fonction, mais ca va trop vite, utilises Thread.Sleep( int ) avant d'afficher l'état après Start( ).
clairenes
Messages postés24Date d'inscriptionlundi 8 août 2005StatutMembreDernière intervention30 août 2005 9 août 2005 à 09:44
resultat des courses : je me suis rendue compte que c'etait bien le cas
lorsque j'enleve certaines lignes de commande de ma fonction Chargement
DataSet
public void ChargementDataSet()
{
MessageBox.Show("je charge le dataset");
string requete1 = "select * from VW_LIAISONS_TABLES";
//string requete2 = "select * from VW_TABLE_COLUMN";
MessageBox.Show(requete1);
ChangementSession();
OracleDataAdapter MaCommande = new
OracleDataAdapter(requete1,MaConnection);
//OracleDataAdapter MaCommande2 = new
OracleDataAdapter(requete2,MaConnection);
ds = new DataSet();
MessageBox.Show("creation dataset");
MaCommande.Fill(ds,"Table1");
//MaCommande2.Fill(ds,"Table2");
MessageBox.Show("ca y est! dataset chargé et connection libérée!!");
MaConnection.Close();
}
Ca marche tres bien lorsque je supprime les MaCommande.Fill() sinon
l'etat reste a Unstarted, je ne comprends pas. surtout que lorsque j'ai
tester mon programme sans les threads le chargement du dataset prenait
quand meme quelques bonnes minutes.
j'en profite aussi pour me renseigner un petit peu sur les evenements
asynchrones. cette technique est utilisée par les threads ou est ce
qu'il faut absolument passer par les delegués?