2010-03-24 3 views
1

Dans un C# .NET Windows application (WinForms) Je mis la visibilité de la case à cocher false:Threading: Régler la visibilité de case à cocher

checkBoxLaunch.Visible = true; 

j'ai commencé un fil.

Thread th = new Thread(new ThreadStart(PerformAction)); 
th.IsBackground = true; 
th.Start(); 

Le fil effectue quelques trucs et définit la visibilité sur true:

private void PerformAction() 
{ 
/* 
. 
.// some actions. 
*/ 
    checkBoxLaunch.Visible = true; 

} 

Après le fil se termine sa tâche, la case à cocher est pas visible pour moi.

Qu'est-ce qui me manque?

+0

"... J'ai mis la visibilité de la case à cocher à false:" ... mais votre faux lit comme vrai ^^ – tanascius

Répondre

5

Vous ne devez pas modifier l'interface utilisateur dans un thread non-UI. Utilisez Control.Invoke, Control.BeginInvoke ou BackgroundWorker pour marshaler l'appel au thread de l'interface utilisateur. Par exemple (en supposant C# 3):

private void PerformAction() 
{ 
/* 
. 
.// some actions. 
*/ 
    MethodInvoker action =() => checkBoxLaunch.Visible = true; 
    checkBoxLaunch.BeginInvoke(action); 
} 

Recherche pour l'une des Control.Invoke, Control.BeginInvoke ou BackgroundWorker trouver des centaines d'articles à ce sujet.

+0

Super ... merci !! – Manish

Questions connexes