Classes Process et ServiceController : attention à la mise en cache des informations
En lisant le post Process and ServiceProcess Caching sur le blog de la team BCL, je me suis rappeler que je m'étais retrouvé confronté à ce problème il y a quelques temps.
Dans mon cas, il s'agissait de lancer un processus puis d'envoyer des messages divers et variés à la fenêtre principale de celui ci.
Autant dire que le cas de la propriété MainWindowHandle retournant 0 était un peu handicapant...
La valeur étant mise en cache, si jamais une première tentative de lecture vous a retourner 0, les appels suivants feront de même, même si entre temps le processus a finit de s'initialiser correctement et que par conséquent EnumWindows permettrait de déterminer correctement le handle de la fenêtre principale.
Vous devez donc garder à l'esprit l'existence des méthodes WaitForInputIdle et Refresh lorsque vous utilisez la classe Process (ainsi que ServiceController)
Blog BCLTeam : Process and ServiceProcess Caching
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :