2

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

WaitForSingleObject SEI.hProcess, -1

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

WaitForSingleObject SEI.hProcess, INFINITE

???

谢谢你的帮助。

4

2 回答 2

7

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

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

实际上,是的。

于 2013-10-25T00:23:57.350 回答
0

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

正如里德的回答所说,是的,它们是相同的,所以也是WaitForSingleObject SEI.hProcess, -3999。基本上任何负数都会环绕并成为可用的最大 unsigned int 值,巧合的是INFINITE.

现在,这是否意味着您应该使用其中任何一个。不。您应该始终使用文档版本,否则 C++ 非常有名,因为未记录的特性具有未定义的行为。

于 2020-02-18T06:14:15.050 回答