Une application WinForms n'exécute pas Application.Run(Form)
immédiatement au démarrage. Il initialise d'abord certaines variables, en accédant aux paramètres de la ligne de commande, à l'API de configuration de l'application, à d'autres données externes et en particulier aux formulaires (par exemple un formulaire de connexion) instancié (et configuré en passant certaines des valeurs précédemment définies).) avec using
et affiché avec ShowDialog
.Toutes les fenêtres de l'application WinForms partagent-elles le même fil?
Ensuite, il exécute Application.Run(Form)
pour afficher le formulaire principal, mais le formulaire principal peut afficher d'autres formulaires (principalement avec ShowDialog
) à son tour. Tous les formulaires sont définis dans une bibliothèque de classes distincte. Beaucoup d'entre eux (les fenêtres) doivent accéder aux objets instanciés dans le Program.Main(string[] args)
(oui, j'ai ajouté la partie string[] args
même si les applications WinForms créées avec Visual Studio ne l'ont pas par défaut) et passent des objets les uns aux autres; Cela m'inquiète au sujet de la sécurité des threads, mais l'idée de base que j'ai à propos du concept «thread UI» suggère que mes inquiétudes pourraient être fausses.
Alors, faire toutes les fenêtres (Form
instances) instanciés et représentés par le même processus d'application WinForms partagent le même thread d'interface utilisateur (sauf si je mets le code instanciation/les montrant dans un mode asynchrone couru Task
ou quelque chose comme ça explicitement bien sûr)? Ou devrais-je réellement utiliser des techniques spéciales (des suggestions spécifiques sont appréciées) pour transmettre des données entre eux en toute sécurité?