@H 和@H[0] 的区别
Difference between @H and @H[0]
我有
var H: array of THandle;
然后在循环中创建多个线程,并将线程句柄分配给 H 的元素,然后等待它们。将 @H[0] 作为第二个参数传递给下面的 WFMO 是可行的。
WaitForMultipleObjects(Length(H), @H[0], True, INFINITE) <-- Works
但是如下传递 @H 失败 WAIT_FAILED。 GetLastError returns "Invalid Handle"。
WaitForMultipleObjects(Length(H), @H, True, INFINITE) <--- Fails.
为什么@H 与@H[0] 不同?
- 因为是动态数组,
H
已经是一个指针,指向第一个元素,所以
@H[0]
与 H
相同 - 指向第一个元素的指针
- 现在
@H
等于 @@H[0]
- 指向第一个元素的指针。
我有
var H: array of THandle;
然后在循环中创建多个线程,并将线程句柄分配给 H 的元素,然后等待它们。将 @H[0] 作为第二个参数传递给下面的 WFMO 是可行的。
WaitForMultipleObjects(Length(H), @H[0], True, INFINITE) <-- Works
但是如下传递 @H 失败 WAIT_FAILED。 GetLastError returns "Invalid Handle"。
WaitForMultipleObjects(Length(H), @H, True, INFINITE) <--- Fails.
为什么@H 与@H[0] 不同?
- 因为是动态数组,
H
已经是一个指针,指向第一个元素,所以 @H[0]
与H
相同 - 指向第一个元素的指针- 现在
@H
等于@@H[0]
- 指向第一个元素的指针。