Решил, что проще будет написать пример
И еще, WaitForSinglObject - используется для проверки единичного события, а WaitForMultipleObjects - для нескольких (третий параметр означает True - "ждать всех событий", False - "ждать любое событие из...") А что касается @FHandles[0] или @FHandles, то тут такая ситуация:
Допустим у вас в массиве FHandles 5 хендлов событий и на текущей операции вы хотите отслеживать только с третьего, то передаете в качестве параметра ссылку на третий (не забудьте корректно указать количество отслеживаемых хендлов WaitForMultiplyObjects(3, @FHandles[2],...)). А если нужно отслеживать все, то указание @FHandles[0] или @FHandles равнозначно.