Почему статус потока мертв?

Вот в чем вопрос. Я вызвал функцию, используя поток, но когда я возвращаюсь к основному элементу управления, главный через несколько секунд переходит в состояние сна.

Пример (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
Другие вопросы по тегам