rikoukiki
Messages postés5Date d'inscriptionjeudi 2 novembre 2006StatutMembreDernière intervention 5 juin 2010
-
23 avril 2010 à 09:48
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 2014
-
27 avril 2010 à 10:09
Bonjour
J'ai crée une classe qui permet de mettre à jours une base de données.
L'objet de cette classe est lancé dans un thread séparé ou par des méthodes get et set j'alimente des valeurs pour une progress bar.
namespace fmm
{
class Update
{
private string texte;
private int progression;
public object synchro = new object();
public Update()
{
settext("Téléchargement des fichiers");
setint(75);
Thread.Sleep(100000);
[beaucoup de codes ....]
}
private void settext(string texte)
{
Monitor.Enter(synchro);
this.texte = texte;
Monitor.Exit(synchro);
}
private void setint(int value)
{
Monitor.Enter(synchro);
this.progression = value;
Monitor.Exit(synchro);
}
public string gettext()
{
return texte;
}
public int getvalue()
{
return progression;
}
Je prends la peine de mettre un mutex ici pour éviter les accès concurrents.
dans mon formulaire principale je lance deux thread :
private void startupdate_Click(object sender, EventArgs e)
{
// Déclaration du thread
Thread myThread;
Thread myThread2;
//update dans un autre thread
barreprogress.Maximum = 100;
myThread = new Thread(new ThreadStart(misajour));
myThread.IsBackground = true;
myThread.Start();
myThread2 = new Thread(new ThreadStart(updateinterface));
myThread2.IsBackground = true;
myThread2.Start();
}
public void misajour()
{
update = new Update();
}
public void updateinterface()
{
//code pas beau à modifier
while (true)
{
try
{
barreprogress.Value = update.getvalue();
labprogress.Text = update.gettext();
}
catch
{
}
}
}
Et bien-sur ça marche pas "La référence d'objet n'est pas définie à une instance d'un objet."
Je bloque pas mal sur ce problème et ne sais plus quoi faire.
Pouvez vous m'aider si il vous plait merci d'avance
A voir également:
Le thread appelant ne peut pas accéder à cet objet parce qu'un autre thread en est propriétaire
--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 26 avril 2010 à 09:29
Salut,
Tu peux surement palier à ton problème par l'utilisation d'événements.
Ceci te permettra de bien séparer tes objets (sans que un seul ne dépende d'un autre).
Ainsi, ton thread de traitement pourra déclencher un événement ("OnSetText" par exemple) qui permettra de mettre à jour ta progressBar...
Tu trouveras beaucoup de code pour faire ceci.
Bon développement,
Billou_13
--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
rikoukiki
Messages postés5Date d'inscriptionjeudi 2 novembre 2006StatutMembreDernière intervention 5 juin 2010 27 avril 2010 à 08:38
salut
Bon j'ai trouvé une solution à mon problème en relisant ma classe j'ai pu factoriser mon code en plusieurs méthodes bien distincts ce qui ma facilité le travail pour mettre en place les évènements.
Je vous remercie pour votre aide comme le disais ma grand mère je me suis couché moins con ces derniers jours
Vous n’avez pas trouvé la réponse que vous recherchez ?
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 27 avril 2010 à 10:09
Salut,
Sache que l'on se couche tous moins cons tous les soirs... (sinon, c'est qu'on le reste...)
Bon développement et bonne continuation !
Billou_13
--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------