为什么线程状态死了?

时间:2013-05-09 02:55:16

标签: ruby multithreading winapi sleep getmessage

这是个问题。我使用线程调用了一个函数,但是当我返回主控件时,main会在几分钟内进入睡眠状态。

示例(Look这里是一行调用Win32API函数GetMessage):

Start()
e = Thread.new { Look() }
for _i in 0..1000
    puts e.status
end

此代码应将e的状态打印1000次,但只打印一次。我找不到合理的错误。 Look在收到消息之前不会返回,因此我怀疑这可能会导致错误。

2 个答案:

答案 0 :(得分:0)

我的猜测是e的状态为nilputs显示为空字符串。

nil状态表示线程异常终止。

无论出现什么问题,您的代码都会打印某些内容 1000次,并且您应该在puts中放置一些可见文字来显示该内容。

此外,不要使用抛弃变量_i,而是写

1000.times do
    puts e.status
end

答案 1 :(得分:0)

我感谢您的帮助, 错误在于我只需要为PeekMessage更改GetMessageA 所以线程不解释那是死的jeje

Some.Proxy