Я запускаю pythoncom.PumpMessages () внутри потока. Эта строка заставит поток остановиться и ждать событий. Мне не удалось отправить WM_QUIT, который нужно отправить, чтобы эта линия не ждала. Теперь я собираюсь использовать os._exit (0), чтобы остановить всю программу. Использование этого метода также, кажется, делает мой код намного более элегантным, так как мне не нужны различные потоки для уведомления друг друга и так далее. Я просто создаю метод, который выглядит примерно так и вызываю его из любого места:
def os_exit():
....saveDataAndCleanUp()
....os._exit(0)
Я знаю, что это очень грубый способ сделать это, и я могу потерять данные, и это остановит процесс
без вызова обработчиков очистки, очистки буферов stdio и т. Д. (Документы Python)
Я разберусь, чтобы не потерять данные (это легко сделать в этой маленькой программе). Меня беспокоит то, что у меня есть и клавиатура, и мышь, использующие pyHook Может ли это вызвать проблемы, чтобы они не отцепились до остановки процесса. Моя программа работает только на Windows XP +. Есть ли что-нибудь еще, что моё приложение могло бы сделать, что бы Windows стала нестабильной, медленной или похожей, или Windows позаботится о моей очистке? Мое приложение является более или менее стандартным приложением с графическим интерфейсом, которое не записывает данные в реестр и не изменяет Windows.