TopMost et WinForm… hum voila un sujet qui dérange car le TopMost est une possibilité de Winform qui peut sembler bien pratique mais qui on le sait bien, a une fâcheuse tendance à énerver l’utilisateur. Car celui-ci voudra toujours pouvoir afficher une autre fenêtre que celle que vous : “développeurs despotiques”, vous le contraignez à voir (subir, serrait peut être plus approprié).
Enfin faisons court: TopMost est vivement déconseillé quand on parle en même temps de “bonnes pratiques” et de “client riche”.
Oui mais voila il y aura toujours un moment où l’on vous demandera de l’utiliser. Ceci a justement été mon cas dernièrement et je suis tombé sur un cas où TopMost pose soucis : l’instanciation d’un formulaire disposant d’un TopMost sur True et dont l’instanciation a lieu dans un context de multi-threading (appel via le ThreadPool ou création de thread à la main… )
Les problèmes rencontrés sont dont :
- Un fonctionnement de manière totalement aléatoire, comme si TopMost était sur False.
- Un blocage du formulaire : il ne répond parfaitement aux sollicitations de l’utilisateur, mais si on demande sa fermeture via une classe instanciée dans un autre thread, il ne prend pas en comte les demande (Close par exemple ne s’excite pas, même si on peut voir que le code est exécuté en mode debug ).
Donc pour conclure Argument_Pour_Ne_Pas_Utiliser_TopMost++