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

在WaitForSingleObject中,timeout=INFINITE是否与timeout=-1相同?,waitforsingleobject,Waitforsingleobject,我正在使用其他人编写的一些Visual Basic for Applications(VB 6.3)代码,他们编写了: WaitForSingleObject SEI.hProcess, -1 出现在中的过程应该在文本框中返回一些数据;有时它无法返回任何东西,我认为这是因为这个,可能是因为它超时了。该代码是否与以下代码相同: WaitForSingleObject SEI.hProcess, INFINITE 谢谢您的帮助。的超时实际上是一个DWORD,它是一个无符号32位整数INFINI

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

WaitForSingleObject SEI.hProcess, -1
出现在中的过程应该在文本框中返回一些数据;有时它无法返回任何东西,我认为这是因为这个,可能是因为它超时了。该代码是否与以下代码相同:

WaitForSingleObject SEI.hProcess, INFINITE

谢谢您的帮助。

的超时实际上是一个
DWORD
,它是一个无符号32位整数
INFINITE
定义为
0xFFFFFF
,但映射到无符号类型的-1会在大多数整数表示中包装并成为此值

该代码是否与以下代码相同:

WaitForSingleObject SEI.hProcess, INFINITE

实际上是的。

所以基本上你的问题是
WaitForSingleObject SEI.hProcess,-1
WaitForSingleObject SEI.hProcess,INFINITE
是否相同

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

现在,这是否意味着你应该使用这两种方法中的任何一种。不,你应该总是使用文档化的版本,否则C++对于没有文档的特性是非常有名的。