Timer évenements

Résolu
djissi Messages postés 16 Date d'inscription lundi 14 novembre 2005 Statut Membre Dernière intervention 4 août 2006 - 2 août 2006 à 09:25
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 2 août 2006 à 10:42
Bonjour j'ai un piti problème, dans mon projet, j'utilise une classe afin d'utiliser un timer pour chaque objet . La voici:
using

System;

using System.Windows.Forms;

public
class MaClasse
{

Timer MonTimer;

public MaClasse(
)
{

this.MonTimer=
new Timer();

this.MonTimer.Tick +=
new System.EventHandler(
this.MonTimer_Tick);
}

public
void Lancer()
{
MonTimer.Interval= Frequence;
MonTimer.Start();
}

private
void MonTimer_Tick(
object sender, System.EventArgs e)
{
MessageBox.Show("toto");
}

Le problème est que lorsque j'utilise ma méthode lancer, rien ne se passe, est ce un problème avec mon évenement?

Merci d'avance

8 réponses

HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
2 août 2006 à 10:25
Ton prblème est simple :


ta méthode MaMethode() instancie des classes (sur ton thread) et se termine => tes objets sont détruient....

il te faut une MaMethode() "bloquante" pour que les objets ne soit pas détruit.

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
2 août 2006 à 09:47
Ca devrait marcher.
Petites questions : Que vaut la variable frequence et ou appelles-tu la méthode lancer?

<hr size="2" />VC# forever
0
djissi Messages postés 16 Date d'inscription lundi 14 novembre 2005 Statut Membre Dernière intervention 4 août 2006
2 août 2006 à 09:55
j'ai verifier, la variable frequence vaut bien 3000 et ca ne marche toujours pas...

public class MaClasse
{
Timer MonTimer;
int Frequence;













public MaClasse(int F)
{
this.Frequence= F
this.MonTimer=new Timer();
this.MonTimer.Tick += new System.EventHandler(this.MonTimer_Tick);
}
........
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
2 août 2006 à 10:04
Où et comment appelles-tu la méthode lancer ?

<hr size="2" />VC# forever
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
djissi Messages postés 16 Date d'inscription lundi 14 novembre 2005 Statut Membre Dernière intervention 4 août 2006
2 août 2006 à 10:12
private






void
Form1_Load(

object
sender, System.EventArgs e)
{


try

{


T1=

new
Thread(

new
ThreadStart(MaMethode));
T1.Start();
}


catch

{}
}


public



void
MaMethode()
{


for
(

int
i=0;i<lstObjets.Count;i++)
{
MaClasse Temp = (MaClasse) lstObjets[i];
Temp .Lancer();
}
}

Mais je suis sur que ma methode "Lancer" fonctionne, je lui ai mis un messageBox pour verifier....
0
djissi Messages postés 16 Date d'inscription lundi 14 novembre 2005 Statut Membre Dernière intervention 4 août 2006
2 août 2006 à 10:16
Ca yest ca marche, mais quand je ne fais pas de thread.

MaMethode()

au lieu de

T1= new
Thread(
newThreadStart(MaMethode));
T1.Start();

je vois pas pourquoi..
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
2 août 2006 à 10:34
Oui...
Si t'es débutant en programmation, tu t'aventures sur un terrain un peu difficile en commençant avec les threads...

<hr size="2" />VC# forever <
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
2 août 2006 à 10:42
Salut

Pour que cela fonctionne, dans un environnement Multi Thread, utilises le Timer de l'espace de nom System.Timers, (si tu veux garder a peu pres la meme syntaxe).
Autrement, tu peux aussi utiliser le Timer de l'espace de nom System.Threading.

Mx
MVP C# 
0
Rejoignez-nous