我正在使用其他人编写的一些 Visual Basic for Applications (VB 6.3) 代码,他们编写了:
WaitForSingleObject SEI.hProcess, -1
出现的过程应该在文本框中返回一些数据;有时它无法返回任何东西,我认为是因为这个,可能是因为它超时了。该代码是否与以下代码相同:
WaitForSingleObject SEI.hProcess, INFINITE
???
谢谢你的帮助。
我正在使用其他人编写的一些 Visual Basic for Applications (VB 6.3) 代码,他们编写了:
WaitForSingleObject SEI.hProcess, -1
出现的过程应该在文本框中返回一些数据;有时它无法返回任何东西,我认为是因为这个,可能是因为它超时了。该代码是否与以下代码相同:
WaitForSingleObject SEI.hProcess, INFINITE
???
谢谢你的帮助。
WaitForSingleObject的超时时间实际上是 a DWORD
,它是一个无符号的32 位整数。 INFINITE
被定义为0xFFFFFFFF
,但映射到无符号类型的 -1 会在大多数整数表示中换行并成为该值。
该代码是否与以下代码相同:
实际上,是的。
所以基本上你的问题转化为是否WaitForSingleObject SEI.hProcess, -1
相同WaitForSingleObject SEI.hProcess, INFINITE
?
正如里德的回答所说,是的,它们是相同的,所以也是WaitForSingleObject SEI.hProcess, -3999
。基本上任何负数都会环绕并成为可用的最大 unsigned int 值,巧合的是INFINITE
.
现在,这是否意味着您应该使用其中任何一个。不。您应该始终使用文档版本,否则 C++ 非常有名,因为未记录的特性具有未定义的行为。