가장 좋은 방법을 처리 :폐쇄 타이머 작업 스레드에서 최초의 예를 보여주고있는 질문을하는
내가 C++에서 타이머 만드는 방법이 있습니다 : 다음 콜백이 트리거되면
if (FALSE == CreateTimerQueueTimer(&m_hSampleStarvationTimer,
m_hSampleStarvationTimerQueue,
(WAITORTIMERCALLBACK)TsSampleStarvationTimeBomb_Static,
(LPVOID)this,
dwDueTime,
0,
WT_EXECUTEONLYONCE))
을 (TsSampleStarvationTimeBomb_Static), 나는 특정 스레드 내에서 큐 핸들과 타이머 핸들을 모두 죽이려고합니다.
void CALLBACK CCaptureChannel::TsSampleStarvationTimeBomb_Static(LPVOID lpArg, BOOLEAN TimerOrWaitFired)
{
HRESULT hr;
BOOL bHandleDeletion = FALSE;
CCaptureChannel* pCaptureChannel = (CCaptureChannel*)lpArg;
ATLASSERT(pCaptureChannel);
bHandleDeletion = DeleteTimerQueueTimer(pCaptureChannel->m_hSampleStarvationTimerQueue, pCaptureChannel->m_hSampleStarvationTimer, NULL);
bHandleDeletion = DeleteTimerQueue(pCaptureChannel->m_hSampleStarvationTimerQueue);
제 질문은 유효합니까? MSDN을 통해 다음 삭제 함수가 너무 많이 걱정해서는 안되는/o 오류를 반환 할 수 있다고 읽었습니다. 콜백 스레드가 자동으로 로그인되면 종료됩니다.
맞습니까? 감사합니다.
SDK 문서는이를 수행하는 교착 상태에 대해 경고합니다. 대신 DeleteTimerQueueEx()를 고려하십시오. –
메신저 확실치 않습니다. 일단 콜백 함수 (async)가 코드 실행을 마쳤 으면 타이머 핸들은 어떻게 될까요? 자동으로 출시 되나요? 또는 그것을 삭제하려면 삭제/취소 함수를 호출해야합니까? –