Utilisation du crochet de clavier global (WH_KEYBOARD_LL) dans WPF / C#
Cette question aborde le problème d'un crochet de clavier global qui cesse de fonctionner après avoir appuyé à plusieurs reprises sur touches.
Problème :
Un hook de clavier global implémenté à l'aide de WH_KEYBOARD_LL cesse de recevoir des événements de touches après une période de frappes intenses. Aucune erreur n'est générée et cela se produit quel que soit l'endroit où les frappes se produisent.
Cause suspectée :
Les problèmes de thread sont soupçonnés d'être le problème sous-jacent.
Exemple de code pour le clavier Hook :
Solution :
Comme le suggère la réponse, le délégué à la méthode de rappel est créé en ligne, ce qui peut conduire à ce qu'il soit ramassage des ordures. Pour garder le délégué en vie et éviter ce problème, il est nécessaire d'attribuer le délégué à une variable membre.
En faisant cela, le délégué sera maintenu en vie pendant toute la durée de vie de l'objet KeyboardListener. Cela devrait résoudre le problème où le crochet du clavier cesse de fonctionner après un certain temps.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!