2009-10-25 5 views
0

Dans mon application, chaque thread gère un formulaire et ses événements sont exécutés dans le thread traitant le formulaire.Traitement des événements pour un formulaire spécifique

Existe-t-il un moyen de gérer les événements pour une instance System.Windows.Form spécifique? Application.Run ne correspond pas à ma conception, et Application.DoEvents traite les événements pour chaque formulaire instancié par l'application.

Répondre

1

Vous rencontrerez un problème, comme tous vos Form's will be on the UI Thread, et donc les événements ne sont pas "threads libres". La méthode suggérée pour gérer ceci est pour les tâches de longue durée à être poussé à BackgroundWorker ou peut-être à ThreadPool. Vous devez ensuite utiliser Invoke pour exécuter des tâches sur le thread UI, ce qui rend le traitement des actions multithread tant que l'interface utilisateur est toujours à thread unique.

+0

Je rends sur deux fenêtres en utilisant OpenGL. Le rendu se produit sur différents threads (un thread pour chaque formulaire qui contient le résultat de rendu). Appeler Application.Run après avoir commencé à rendre les threads, tous les événements sont traités dans un autre thread (thread principal): cela signifie que je dois synchroniser les threads de rendu avec le thread principal (appelant de Application.DoEvents ou Application.Run)? – Luca

+0

En termes d'événements Windows, oui ceux-ci viendront sur un seul thread. Vous aurez donc besoin de coordonner avec n'importe quel thread qui gère 'DoEvents'. – user7116

Questions connexes