2009-03-17 5 views
1

J'ai un thread qui surveille l'état de l'appareil (en utilisant les E/S). Cela déclenchera l'événement sur plusieurs parties de l'interface utilisateur (Formulaires/Dialogues ..) concernant l'état de la connexion (Connecté, Déconnecté, Défaut). En fonction de ce statut, les formulaires et les boîtes de dialogue sont détruits, créés, activés et désactivés.Shift Control du fil de backgrount au thread principal

Mon problème:

I getting Cross-Thread exception because the thread doing the operations like Dispose the from, create the from .... . I using smart client, forms and dialogs are part of the WorkItemController and i just terminating that. 

Je ne veux pas utiliser u ou Invoke BeginInvoke. Je veux que ce fil continue seulement à surveiller le statut. SO que ce thread doit donner son contrôle au thread principal et le thread principal fermera le formulaire ou créera le formulaire.

Juste je veux comment passer le contrôle d'un fil à l'autre. Y a-t-il un moyen?

Répondre

1

La meilleure solution consiste à utiliser Invoke pour revenir à votre thread principal.

ou si vous pouvez utiliser des variables globales partagées entre le thread principal et votre thread d'arrière-plan, mais cela signifie que votre thread principal doit vérifier les variables dans une boucle et cela peut bloquer l'interface graphique. Ou utilisez System.Windows.Forms.Timer comme il s'exécute dans le thread principal

Questions connexes