我有一个事件对象向量,用于WaitForMultipleObjects
函数。在发出事件信号后,我尝试使用close handle函数关闭事件,但是我收到类似Invalid handle was specified
的错误。任何人都能说出问题是什么吗?
std::vector<HANDLE> eventVector;
//..
// Entering data to vector
size_t count = eventVector.size();
DWORD signaledEvent;
While(count > 0)
{
if (WAIT_OBJECT_0 == (signaledEvent = WaitForMultipleObjects(handleVector.size(),handleVector.data(), false, INFINITE)))
CloseHandle(handleVector[signaledEvent - WAIT_OBJECT_0]); // Here I am getting error.
count--;
}
答案 0 :(得分:1)
在第一次迭代中它可能运行良好,但是一旦你关闭句柄,你就不能再次向WaitForMultipleObjects
提供相同的向量:至少有一个句柄不再有效。
所以WaitForMultipleObjects
会在那里返回一个错误,可能会在CloseHandle
中稍后返回另一个错误。
这不是你的真实代码,对吗?因为在此代码段中,您并未真正检查返回的错误值。因为此代码段有更多错误需要注意:
WAIT_OBJECT_0 + 0
,而不检查其他WAIT_OBJECT_0 + N