2010-12-13 2 views
1

J'essaie de créer un client C# IRC. Mon problème: J'ai un TextBox déclaré dans la classe Form, et j'ai un timer qui exécute la méthode OnTimedEvent, qui devrait éditer le TextBox.Comment modifier les contrôles Windows Forms à partir de différents threads

System.Timers.Timer aTimer = new System.Timers.Timer(); 
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); 
aTimer.Interval = 500; 
aTimer.Enabled = true; 


public void OnTimedEvent(object source, ElapsedEventArgs e) 
{ 
    string inputLine = reader.ReadLine(); 
    tab1text.Text = inputLine; 
} 

je reçois une erreur que l'objet que je veux modifier, a été créé par un autre thread ..

Le lecteur est un StreamReader qui obtient des données à partir d'une connexion TCP.

Répondre

4
tab1text.Invoke(new Action(delegate(){ tab1text.Text = inputLine })); 
1

Vous devez utiliser Invoke pour modifier l'interface utilisateur à partir d'un autre thread.

+0

Ill essayer, merci! –

1

En fait, il devrait y avoir un point-virgule:

tab1text.Invoke(new Action(delegate(){ tab1text.Text = inputLine; })); 
Questions connexes