Bonjour,
Je travail avec Visual studio 2003.
Dans mon projet, j'ai un thread qui s'occupe de recevoir de l'information sous forme de string. Je voudrais, à la réception d'un message, ouvrir une fenêtre qui affichera le message reçu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 private void creation_Threadecoute() { this.monThread = new Thread(new ThreadStart(threadEcoute)); this.monThread.Name="threadEcoute"; this.monThread.Start(); } private void threadEcoute() { continuer = true; string data; while(continuer) { /* réception du message dans data qui utilise un ReadLine qui bloque le thread jusqu'à la réception d'un message */ //création d'un Form Erreur err = new Erreur(data); err.Show(); } }Quand la fenêtre Erreur s'ouvre, elle se "bloque", elle plante jusqu'à ce que je ferme la fenêtre Principal qui à créé le thread (qui implique le kill du thread).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 public class Erreur : System.Windows.Forms.Form { private System.Windows.Forms.Label label1; private System.Windows.Forms.Button button1; private System.ComponentModel.Container components = null; public Erreur(string msg) { InitializeComponent(); this.label1.Text = msg; } private void InitializeComponent() { this.label1 = new System.Windows.Forms.Label(); this.button1 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // label1 // this.label1.Location = new System.Drawing.Point(24, 16); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(240, 72); this.label1.TabIndex = 0; // // button1 // this.button1.Location = new System.Drawing.Point(104, 104); this.button1.Name = "button1"; this.button1.TabIndex = 1; this.button1.Text = "Ok"; this.button1.Click += new System.EventHandler(this.button1_Click); // // Erreur // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 133); this.Controls.Add(this.button1); this.Controls.Add(this.label1); this.Name = "Erreur"; this.Text = "Erreur"; this.ResumeLayout(false); } private void button1_Click(object sender, System.EventArgs e) { this.Close(); } }
Est-ce que ce serait possible, depuis le thread, de créer la fenêtre Erreur comme je le désire et qu'elle s'exécute normalement? Est-ce que la création d'un nouvel objet Form n'est pas équivalent à la création d'un nouveau thread et donc que ce nouveau thread s'execute indépendemment du reste?
Merci d'avance
A toute
Philip.
Partager