2013-08-22 6 views
0

어떻게 든 thread.sleep을 모방 한 async 인 실행 함수에서 sleep하는 방법을 만들 수 있습니까? 예를 들어비동기 실행에서 동기식 슬립?

은 내가 nexttick가 실행을 중지하지 않고 스레드 Thread.Sleep()처럼 작동 할 수 있다면 훨씬 더 나은 일을 할

Workthread run() 
{ 
while (true) 
{ 
//All calls cannot pause inside, async 
CallWorkFunction(); 
CallOtherWorkFuctuion(); 
Callthirdworkfunction(); 
thread.sleep(0x10); 
    curtick++; 
} 
} 

//CallWorkFunction() 

if (nexttick - curtick > 0) 
    return; 
foreach (var item in collection.ToList()) 
{ 
    if (!item.IsReady) 
     continue; 
    collection.Remove(item); 
    ProcessItem(item); 
    nexttick = curtick + 20; 
    return; 
} 

이 기능이있다. 비동기 코드가 다수의 상태 기반 검사를 갖기 시작했기 때문에 많은 부분을 올바른 일시 중지로 바꿀 수 있습니다. 이 일을

+2

당신은 모든 16 밀리 초 뭔가를 폴링하려고합니까? 'run()'메소드는 sleep 루프가 아닌 timer 여야합니다. 생각 해보니 타이머가 있어야하는 것처럼 보입니다. 그러나 더 많은 컨텍스트가 없으면 확실하게 말하기는 어렵습니다. –

+3

async/await를 사용한다면'Task.Delay'를 기다려야합니다. –

답변

0

시도 :

async Workthread run() 
{ 
    while (true) 
    { 
    //All calls cannot pause inside, async 
    CallWorkFunction(); 
    CallOtherWorkFuctuion(); 
    Callthirdworkfunction(); 

    await Task.Delay(0x10); 

    curtick++; 
    } 
} 
관련 문제