다음을 통해 공유


DeleteTimerQueueTimer 함수(threadpoollegacyapiset.h)

타이머 큐에서 타이머를 제거하고 필요에 따라 타이머를 삭제하기 전에 현재 실행 중인 타이머 콜백 함수가 완료되기를 기다립니다.

구문

BOOL DeleteTimerQueueTimer(
  [in, optional] HANDLE TimerQueue,
  [in]           HANDLE Timer,
  [in, optional] HANDLE CompletionEvent
);

매개 변수

[in, optional] TimerQueue

타이머 큐에 대한 핸들입니다. 이 핸들은 CreateTimerQueue 함수에서 반환됩니다.

기본 타이머 큐를 사용하여 타이머를 만든 경우 이 매개 변수는 NULL이어야 합니다.

[in] Timer

타이머 큐 타이머에 대한 핸들입니다. 이 핸들은 CreateTimerQueueTimer 함수에 의해 반환됩니다.

[in, optional] CompletionEvent

시스템이 타이머를 취소하고 모든 콜백 함수가 완료되었을 때 신호를 받을 이벤트 개체에 대한 핸들입니다. 이 매개 변수는 NULL일 수 있습니다.

이 매개 변수가 INVALID_HANDLE_VALUE 경우 함수는 반환하기 전에 실행 중인 타이머 콜백 함수가 완료되기를 기다립니다.

이 매개 변수가 NULL이면 함수는 삭제할 타이머를 표시하고 즉시 반환합니다. 타이머가 이미 만료된 경우 타이머 콜백 함수가 완료될 때까지 실행됩니다. 그러나 타이머 콜백 함수가 완료되면 알림이 전송되지 않습니다. 대부분의 호출자는 이 옵션을 사용하지 않아야 하며, 필요한 정리를 수행할 수 있도록 타이머 콜백 함수 실행이 완료될 때까지 기다려야 합니다.

반환 값

함수가 성공하면 반환 값이 0이 아닙니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다. 오류 코드가 ERROR_IO_PENDING 경우 이 함수를 다시 호출할 필요가 없습니다. 다른 오류의 경우 호출을 다시 시도해야 합니다.

설명

스레드가 가장을 사용하는 동안에는 이 함수를 호출할 수 없습니다. 결과 동작이 정의되지 않았습니다.

콜백 함수가 타이머 스레드에서 실행되지 않는 한 다른 타이머의 타이머 콜백 내에서 이 함수를 호출할 때 CompletionEventINVALID_HANDLE_VALUE 설정할 수 있습니다. 그러나 두 콜백 함수가 서로의 타이머에서 차단 DeleteTimerQueueTimer 호출을 시도하는 경우 교착 상태가 발생할 수 있습니다. 또한 콜백과 연결된 타이머에서 차단 삭제 호출을 수행할 수 없습니다.

영구 스레드에서 DeleteTimerQueueTimer 를 차단하는 경우 주의해야 합니다. 삭제되는 타이머가 WT_EXECUTEINPERSISTENTTHREAD 사용하여 만들어진 경우 교착 상태가 발생할 수 있습니다.

미해결 콜백 함수가 있고 CompletionEventNULL인 경우 함수는 실패하고 오류 코드를 ERROR_IO_PENDING 설정합니다. 이는 미해결 콜백 함수가 있음을 나타냅니다. 이러한 콜백이 실행되거나 실행 중간에 있습니다. 콜백 함수 실행이 완료되면 타이머가 정리됩니다.

타이머 큐의 모든 타이머를 취소하려면 DeleteTimerQueueEx 함수를 호출합니다.

이 함수를 사용하는 애플리케이션을 컴파일하려면 _WIN32_WINNT 0x0500 이상으로 정의합니다. 자세한 내용은 Windows 헤더 사용을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 threadpoollegacyapiset.h
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

CreateTimerQueue

CreateTimerQueueTimer

DeleteTimerQueueEx

동기화 함수

타이머 큐