2014-10-30 4 views
4

TaskTimer 클래스 API를 살펴 보았지만 이후 실행을 위해 Task을 예약하는 방법에 대한 정보를 찾을 수 없습니다. Timer 클래스를 사용하면 이후 실행을 위해 스레드를 예약 할 수 있지만 Task을 예약해야합니다. Task.Delay(...) 개의 메소드를 가지고 있지만 확실한 지연은 스케줄링과 유사하지 않습니다.향후 실행을위한 예약 작업

편집 (설명) : x 분 후에 작업을 시작하고 싶습니다.

+0

그것은 당신이 무엇을하려는 지에 따라 달라집니다. 일정 시간이 경과 한 후에 무언가를하고 싶습니까? 타이머를 사용하십시오. "미래 처형"이란 정확히 무슨 뜻입니까? –

+0

예, 30 분 후에 작업을 시작하기 위해 작업을 시작하겠습니다. – newprint

+1

'Task.Delay'는 내부적으로 'Timer'를 사용하고 'Yes'는 'Timer'를 찾고 있습니다. .net 프레임 워크에서 사용할 수있는 타이머가 여러 가지 있습니다. 시나리오에 맞는 타이머를 선택하십시오. –

답변

4

넌 (내부적 System.Threading.Timer하여 구현된다)를 Task.Delay를 사용해야 지연이 "실행"된다

async Task Foo() 
{ 
    await Task.Delay(TimeSpan.FromMinutes(30)); 
    // Do something 
} 

there is no thread 동안 사용된다. 실행 대기가 완료되면 작업을 종료합니다.

2

대신 this Timer (System.Timers.Timer)를 사용합니다. 사용하기가 조금 더 간단합니다. 간격을 30으로 설정하고 경과 이벤트가 원하는 메소드를 호출하는지 확인하면서 타이머를 시작하십시오. 30 분마다가 아니라 한 번만 실행하기를 원하면 나중에 중지 할 수 있습니다. 링크 된 MSDN 페이지에서

코드 샘플 :

// Create a timer with a two second interval. 
aTimer = new System.Timers.Timer(2000); 
// Hook up the Elapsed event for the timer. 
aTimer.Elapsed += OnTimedEvent; 
aTimer.Enabled = true;