begin process at 2010 02 10 08:38:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

Process

 > 

controle listbox dans un thread


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

controle listbox dans un thread

lundi 20 novembre 2006 à 17:53:21 | controle listbox dans un thread

diego29

Membre Club
bonjour ,

je souhaite afficher des nombres premiers dans une listbox à travers un thread

voici mon code sans erreur de compilation mais qui n'affiche rien quelqu'un a t il une idée ?

merci.

[code]

using

System;

using

System.Collections.Generic;

using

System.ComponentModel;

using

System.Data;

using

System.Drawing;

using

System.Text;

using

System.Windows.Forms;

using

System.Threading;

 

namespace

Premier

{

publicpartialclassForm1 : Form

{

public Form1()

{

InitializeComponent();

}

[

STAThread]

publicstaticvoid lancePremier()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(newForm1());

Thread t = newThread(newThreadStart(ThreadFunction));

t.Start();

}

privatestaticvoid ThreadFunction()

{

Form1 f = newForm1();

//f.listBox1.BeginUpdate();

for (int p = 1; p < 50; p++)

{

int i = 2;

while ((p % i) != 0 && i < p)

{

i++;

}

if (i == p)

{

f.listBox1.Items.Add(p.ToString());

Thread.Sleep(50);

}

}

//f.listBox1.EndUpdate();

}
[/code]

lundi 20 novembre 2006 à 18:09:54 | Re : controle listbox dans un thread

Bidou

Administrateur CodeS-SourceS
Salut,
Pas super la mise en forme de ton texte
Ca ne marche surement pas pour des raisons de cross-threading. Si t'as pas d'exception c'est certainement que tu travailles avec le framework 1.
Tu peux jeter un oeil à ce tuto de Mx qui parle du cross-threading




-Blog-
lundi 20 novembre 2006 à 18:10:19 | Re : controle listbox dans un thread

MorpionMx

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Salut

Voila ton code corrigé



using System;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;

namespace Premier
{
   publicdelegatevoidAddItemDelegateHandler(ListBox lb, string item);
   publicclassForm1 : Form
  
{
      privateListBox listBox1;
      privateAddItemDelegateHandler AddItemDelegate;
      
      public
staticvoid Main()
      {
         Application.Run(newForm1());
      }
      
      public
Form1()
      {
         InitializeComponent();
         this.AddItemDelegate = newAddItemDelegateHandler(AddItem);
         this.HandleCreated += newEventHandler(Form1_HandleCreated);
      }
      
      private
void Form1_HandleCreated(object sender, EventArgs e)
      {
         Thread t = newThread(newThreadStart(ThreadFunction));
         t.Start();
      }

      public
void AddItem(ListBox lb, string item)
      {
            lb.Items.Add(item);
       }

       privatevoid InitializeComponent()
       {
            this.listBox1 = new System.Windows.Forms.ListBox();
            this.SuspendLayout();
            this.listBox1.FormattingEnabled = true;
            this.listBox1.Location = new System.Drawing.Point(22, 22);
            this.listBox1.Name = "listBox1";
            this.listBox1.Size = new System.Drawing.Size(177, 212);
            this.listBox1.TabIndex = 0;
            this.ClientSize = new System.Drawing.Size(284, 264);
            this.Controls.Add(this.listBox1);
            this.ResumeLayout(false);
         }

         private
void ThreadFunction()
         {
               for (int p = 1; p < 50; p++)
               {
                  int i = 2;
                  while ((p % i) != 0 && i < p) i++;
                  if (i == p) this.Invoke(AddItemDelegate, this.listBox1, i.ToString());
               }
         }
   }
}




Mx
MVP C#
 


lundi 20 novembre 2006 à 18:11:25 | Re : controle listbox dans un thread

Bidou

Administrateur CodeS-SourceS
Quand on parle du loup....




-Blog-
lundi 20 novembre 2006 à 18:15:03 | Re : controle listbox dans un thread

MorpionMx

Membre Club Administrateur CodeS-SourceS
^^

En fait, ce n'est meme pas une question de cross-threading quand on regarde mieux le code d'origine.
La Form est lancée dans le Thread...



Mx
MVP C#
 

lundi 20 novembre 2006 à 19:26:16 | Re : controle listbox dans un thread

diego29

Membre Club
désolé pour la mise en page c'est le réflexe du tag [code]

merci pour la solution c'est bien ça et le tuto sur l'utilisation de delegate car je manquais totalement d'info sur le sujet.
lundi 27 novembre 2006 à 11:44:08 | Re : controle listbox dans un thread

diego29

Membre Club
petite question complémentaire :

ce code premier qui est maintenant sous forme de dll est dans une autre application qui doit pouvoir appeler ce thread à partir d'un menu dans le genre :

private

void lancerToolStripMenuItem1_Click(object sender, EventArgs e){
Console.WriteLine("lancement d'un thread Premier");
Premier obj2 = newPremier();
obj2.Form1();

}

le problème est que cette fois la form premier ne s'affiche plus et on ne lance pas le thread.Etant encore débutant en C# je ne vois pas le problème, pouvez vous m'aider?
merci




lundi 27 novembre 2006 à 11:50:23 | Re : controle listbox dans un thread

MorpionMx

Membre Club Administrateur CodeS-SourceS
Salut

en reprenant le code que je t'ai donné, il suffirait de faire

Form1 f = new Form1();
f.Show();

(et d'enlever la méthode Main)


Mx
MVP C#
 

lundi 27 novembre 2006 à 12:16:48 | Re : controle listbox dans un thread

diego29

Membre Club
ça me crée bien une form mais pas celui qui contient la listbox
lundi 27 novembre 2006 à 12:20:50 | Re : controle listbox dans un thread

MorpionMx

Membre Club Administrateur CodeS-SourceS
Tu peux me donner ton code pour que je vois exactement quel appel tu dois faire ?

Mx
MVP C#
 


1 2

Cette discussion est classée dans : code, system, listbox, thread, using


Répondre à ce message

Sujets en rapport avec ce message

Pb avec mon WebService : perte de variable [ par vow ] Bonjour @ tousJe me suis mis au C# depuis peu de temps, et je crée mon premier WebService.Un client appelle ce WS.Mon problème est que j'ai l'impressi Multi threading using TCP and socket [ par gdupasqu ] Bonjour,je suis entrain d'écrire un programme (client et serveur).Le serveur fonctionne comme ceci: 1. Le serveur écoute sur un port fixé. 2. Lorsqu'u Multi Threading en utilisant TCP [ par gdupasqu ] Bonjour,je suis entrain d'écrire un programme (client et serveur).Le serveur fonctionne comme ceci:1. Le serveur écoute sur un port fixé.2. Lorsqu'un Connexion Internet [ par Bidou ] Bonjour,Je cherche une méthode qui me permettrais de savoir si une connexion à internet est existante.J'ai trouvé ce morceau de code sur Internet, mai problème avec thread jouant un son! [ par othland ] slt tlm;je voulais concevoir un programme qui lance un thread qui lui même surveille l'horloge système pour lancer un son, le problème c'est que quand pb: ou placer un thread???? [ par othland ] slt tlm;c'est la première fois que je travaille avec des thread sous visual C#.j'ai un programme qui gère plusieurs fenêtres...etc.je veux qu'en paral Client IRC [Sockets/Threads] [ par SpecialCharacter ] Bonjour, je me suis mis à la programmation d'un petit client IRC Il ressemble en beaucoup de points à tous ceux des débutants je n'en doute pas. Il e Threads en csharp [ par moi411 ] Bonsoir à tous,Pour être bref le thread que j'utilise marche mais seulement avec l'utilisation d'une MessageBox dans le programme principal...Mon prog Port serie Message d'erreur [ par nxp ] J'essaie d'ouvre le port serial sur un PDA mobile 5. Ça fonctionne, je recoie le texte. Mais j'ai aussi un message de windows dans la console du genre Filestream est introuvable [ par lutin06 ] SalutFranchement ya des trucs incompréhensibles quand meme.J'ai un code de ce type :[CODE]using System;using System.IO;using System.Runtime.Serializat


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,522 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales