DirectPlay DirectPlay C/C++ 레퍼런스 인터페이스 IDirectPlay8ThreadPool DoWork [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
현재 스케줄 되고 있는 작업을 실행한다.
구문
HRESULT DoWork(
const DWORD dwAllowedTimeSlice, const DWORD dwFlags );
파라미터
- dwAllowedTimeSlice
- [in] 작업이 완료하기까지 이용할 수 있는 시간을 지정한다. 곧바로 이용 가능한 항목을 모두 실행할 수 있도록(듯이) 하려면 , INFINITE 로 설정한다.
- dwFlags
- [in] 예약이 끝난 상태. 0 이 아니면 안된다.
반환값
추가 작업을 곧바로 이용할 수 없는 경우는 DPN_OK 를 돌려준다. dwAllowedTimeSlice 이 INFINITE 로 설정하고 있지 않고, 미처리의 작업 항목을 남겨 지정한 시간이 지났을 경우, DPNSUCCESS_PENDING 가 반환된다. 그 이외의 경우, 다음의 몇개의 에러를 돌려준다.
DPNERR_UNINITIALIZED 요구된 개체가 초기화되지 않다. DPNERR_INVALIDFLAGS 이 메서드에 건네진 플래그는 무효이다. DPNERR_NOTREADY 개체를 사용할 준비가 되지 않다. DPNERR_NOTALLOWED 이 기능은, 이 개체에서는 허가되지 않다.
주의
이 메서드를 사용하면 Microsoft® DirectPlay® 는 독자적인 thread없이 동작할 수 있다. 타임 크리티컬인 처리가 거의 정확하게 실행할 수 있도록(듯이), 일정 간격으로 이 메서드를 호출하는 것이 요구되고 있다.
dwAllowedTimeSlice 파라미터는 0 ~ 60,000 밀리 세컨드 (1 초)로 설정할 필요가 있다. 또, INFINITE 로 설정할 수도 있다. 0 으로 설정했을 경우, 작업 항목은 1 개까지 밖에 실행되지 않는다.
thread수가 0 으로 설정되어 있는 경우, 이 메서드는 호출할 수 없다. 현재 액티브한 thread가 있는 경우, 이 메서드는 DPNERR_NOTREADY 를 돌려준다.
복수의 thread가 동시에, 재귀적으로, 또는 DirectPlay 콜백내에서 이 메서드를 호출하려고 했을 경우,DPNERR_NOTALLOWED 가 반환된다.