Źródło błędu
To nie jest błąd związany z programem Visual Studio ani Windows. W rzeczywistości błąd występuje na twojej klawiaturze! Zgłoszono, że wiele klawiatur różnych dostawców jest wadliwych.
Problem
Jeśli najpierw naciśniesz Ctrl+ Breaki zwolnisz Ctrl, Break utknie na błędnej klawiaturze. Jeśli kiedykolwiek naciśniesz Ctrl+ Break„niewłaściwy” sposób, będziesz miał problem z przerwaniem wyszukiwania.
Detale
Zgodnie ze specyfikacjami kodu skanowania, Breaka Ctrl+ Breaksą wyjątkowe. Wysyłają kody „make” (naciśnij) ORAZ „break” (zwolnij) kody skanowania w momencie naciśnięcia Break. Nic nie wysyłają po zwolnieniu Break. Błędna klawiatura wyśle następującą sekwencję:
- Ctrl kod „zrób”
- Ctrl+ Break„zrób” kod skanowania
- Ctrl „zepsuj” kod skanowania
- Pause „zepsuj” kod skanowania
Oznacza to, że Ctrl+ Breaknigdy nie jest uwalniany, ale zamiast tego Pausejest uwalniany.
Reprodukcja
Możesz na przykład użyć starego dobrego Spy ++ z narzędzi Visual Studio. Dołącz go do czegokolwiek, na przykład Notatnika Windows i monitoruj wiadomości (sugeruję, aby wybierać tylko wiadomości z klawiatury). Naciśnij Ctrl+ Break, Ctrlnajpierw zwalniając . Sprawdź dane wyjściowe ze Spy ++. Zobaczysz sekwencję, którą pokazałem w sekcji Szczegóły.
Próbowałem dwóch różnych klawiatur na tym samym komputerze. Logitech K120 ma błąd, podczas gdy niektóre inne klawiatury Mitsumi zachowują się zgodnie ze specyfikacjami i nie zawierają błędu.
Jeśli się nad tym zastanowić, łatwo zrozumieć, że prawidłowe zachowanie wymaga specjalnej obsługi spraw, podczas gdy zachowanie błędne jest naiwne. Dlatego wiele różnych klawiatur może być wadliwych.
Rozwiązanie
Wymień klawiaturę :)
Obejście
Musisz po prostu nacisnąć Ctrl+ Break, zwracając Breaknajpierw uwagę na zwolnienie . Nie ma znaczenia, która aplikacja jest aktywna.