2010-01-12 5 views
1

J'ai un contrôle utilisateur C#, qui a son propre thread de travail d'arrière-plan. Ce thread de travail est démarré dans le constructeur du contrôle et arrêté lorsque le contrôle est éliminé.C# UserControl BeginInvoke Problème

Le thread appelle périodiquement la méthode BeginInvoke avec un délégué, mais parfois l'exception "Invoke ou BeginInvoke ne peut pas être appelé sur un contrôle tant que le handle de fenêtre n'a pas été créé." occoures.

Maintenant, je vous demande, comment puis-je vérifier si l'appel BeginInvoke est possible à partir de mon thread de travail pour ne pas invoquer tant que le contrôle n'est pas complètement créé?

Ce problème survient uniquement lors de la compilation d'une version. Pas en mode débogage.

meilleures salutations

Répondre

3

Le thread de travail devrait être créé à l'intérieur ... (vous avez deux options):

  1. Un gestionnaire d'événement Control.HandleCreated
  2. Redéfinition Control.OnHandleCreated

Ce que vous devez savoir, c'est qu'un contrôle peut ne pas être entièrement créé (prêt à être utilisé) même après l'exécution du constructeur.

+0

Va essayer ça. Merci. Modifier: Cela semble fonctionner. Je lance maintenant le thread lorsque l'événement HandleCreated apparaît et l'arrête lorsque l'événement HandleDestroyed est déclenché. – Emiswelt