这就是问题所在。我使用线程调用了一个函数,但是当我返回到主控制时,main在几分钟内就进入了睡眠状态。
示例(Look
在这里是调用Win32API函数GetMessage
的行):
Start()
e = Thread.new { Look() }
for _i in 0..1000
puts e.status
end
这段代码应该打印e
的状态1000次,但它只打印一次。我找不到一个合理的错误。Look
不返回,直到它得到一个消息,所以我怀疑这可能会导致一个错误。
我猜e
的状态是nil
, puts
显示为空字符串。
nil
状态表示线程异常终止。
puts
中放一些可见的文本来显示。
另外,与其使用一个一次性变量_i
,不如写
1000.times do
puts e.status
end
我解决了,谢谢你的帮助。错误在于我只需要为PeekMessage更改GetMessageA所以线程不会解释这是dead jeje
。代理