Почему статус потока мертв?
Вот в чем вопрос. Я вызвал функцию, используя поток, но когда я возвращаюсь к основному элементу управления, главный через несколько секунд переходит в состояние сна.
Пример (Look
вот строка, которая вызывает функцию Win32API GetMessage
):
Start()
e = Thread.new { Look() }
for _i in 0..1000
puts e.status
end
Этот код должен напечатать e
статус 1000 раз, но он просто печатается один раз. Я не могу найти разумную ошибку. Look
не возвращается, пока не получит сообщение, поэтому я подозреваю, что это может быть причиной ошибки.
2 ответа
Я решил спасибо за вашу помощь, ошибка была в том, что мне нужно всего лишь изменить GetMessageA для PeekMessage, чтобы поток не интерпретировал, что он мертв
Some.Proxy
Я предполагаю, что статус e
является nil
, который puts
отображается как пустая строка.
nil
статус означает, что поток завершен ненормально.
Что бы ни случилось, ваш код печатает что-то 1000 раз, и вы должны поместить некоторый видимый текст в puts
чтобы показать это.
Кроме того, вместо использования одноразовой переменной _i
, записывать
1000.times do
puts e.status
end