我正在使用其他人编写的一些Visual Basic for Applications (VB6.3)代码,他们写道:
WaitForSingleObject SEI.hProcess, -1它所在的进程应该在文本框中返回一些数据;有时它无法返回任何内容,我认为这是因为它超时了。该代码是否与以下代码相同:
WaitForSingleObject SEI.hProcess, INFINITE???
谢谢你的帮助。
发布于 2013-10-25 08:23:57
WaitForSingleObject的超时实际上是一个DWORD,它是一个无符号的32位整数。INFINITE被定义为0xFFFFFFFF,但是映射到无符号类型的-1会换行,并在大多数整数表示中成为此值。
的代码是否与以下代码相同:
实际上,是的。
发布于 2020-02-18 14:14:15
因此,基本上您的问题转换为WaitForSingleObject SEI.hProcess, -1和WaitForSingleObject SEI.hProcess, INFINITE是否相同?
正如里德的回答所说,是的,它们是一样的,WaitForSingleObject SEI.hProcess, -3999也是一样的。基本上,任何负数都会绕回并成为可用的最大无符号整型,这恰好是INFINITE的值。
现在,这是否意味着你应该使用这两个中的一个。不是的。你应该始终使用文档化的版本,否则C++对于未文档化的特性具有未定义的行为是非常有名的。
https://stackoverflow.com/questions/19578949
复制相似问题