Sacré bug, celui là. Je pensais l’avoir corrigé pour la v3.2, et puis au dernier moment, après avoir rajouté un système de rapport en cas de crash sur les erreurs non gérées, … ce bug de reload a refait surface.
D’où l’a sortie de la v3.2.0.2 pour pallier le problème en attendant de trouver une solution finale.

Il m’en aura fait voir de toutes les couleurs. Jamais reproductible à coup sûr, difficile à tracer en mode Debug … la haine totale !

Mais j’ai fini par l’avoir, et cette fois-ci, il est réellement éradiqué. (Ce sera pour la prochaine version …)

 Alors, ou était le problème ?
Et bien, c’est une histoire de fenêtre modale.

L’appli fonctione avec un form caché, qui ouvre la fenêtre principale.
Mais cette forme cachée gère aussi l’affichage de presque toutes les fenêtres.
Résultat, lorsqu’on demande à la fenêtre principale d’afficher les options, l’appel passe par le formulaire caché.
Et j’affiche la fenêtre d’options en indiquant que le formulaire « parent » est la fenêtre principale.

Sauf que, lorsqu’on demande à l’appli de redémarrer lors d’un changement de langue, la fonction génère une erreur lors du retour de d’appel :
FenetreOption.ShowDialog(FenetrePrincipale)
En effet, si la FenetrePrincipale se ferme « avant » la fenêtre d’options, le ShowDialog plante car la FenetrePrincipale n’existe plus !
Et même un try/catch ne changeait rien au problème !

Résultat, j’ai changé mon code, et je n’utilise plus la FenêtrePrincipale en tant que parent.

Ce bug était là depuis je ne sais plus combien de temps, et a toujours posé des problèmes de façon plus ou moins aléatoire.
Il m’aura énervé pendant pas mal de temps, mais cette fois-ci, tout est réellement OK.

Bye bye le bug !