在WaitForSingleObject中,timeout = INFINITE与timeout = -1相同吗?

时间:2013-10-25 00:12:06

标签: waitforsingleobject

我正在使用其他人编写的一些Visual Basic for Applications(VB 6.3)代码,他们写道:

WaitForSingleObject SEI.hProcess, -1

它出现的过程应该在文本框中返回一些数据;有时它没有返回任何东西,我认为这是因为这,可能是因为它是它的超时。该代码是否与:

相同
WaitForSingleObject SEI.hProcess, INFINITE

???

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

WaitForSingleObject的超时实际上是DWORD,这是无符号 32位整数。 INFINITE定义为0xFFFFFFFF,但-1映射到无符号类型换行,并在大多数整数表示中成为此值。

  

该代码是否与:

相同

有效,是的。

答案 1 :(得分:0)

因此,基本上您的问题会转化为WaitForSingleObject SEI.hProcess, -1WaitForSingleObject SEI.hProcess, INFINITE是否相同?

正如里德的回答所说,是的,它们是相同的,WaitForSingleObject SEI.hProcess, -3999也是如此。基本上,任何负数都会环绕并变为可用的最大无符号整数,恰好是INFINITE的值。

现在,这是否意味着您应该使用其中两个。没有。您应该始终使用已记录的版本,否则C ++非常有名,因为未记录的功能具有未定义的行为。