在WaitForSingleObject中,timeout=INFINITE是否与timeout=-1相同?
我正在使用其他人编写的一些Visual Basic for Applications(VB 6.3)代码,他们编写了:在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
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++对于没有文档的特性是非常有名的。