Теоретически, можно не делать SetEvent, но делать SetManualReset (если очень хочется сделать ManualReset именно последним св-вом)
#pas
procedure THIEvents.SetManualReset(Value: boolean);
begin
if FEvent <> 0 then CloseHandle(FEvent);
FEvent := CreateEvent(nil, Value, False, @_prop_Name);
end;