2011-10-02 3 views
11

새로운 "비동기"스타일의 C# 용 JavaScript setTimeout(callback, milliseconds)의 아날로그는 무엇입니까?C# 5.0의 비 차단 수면 (JavaScript의 setTimeout과 유사)

예를 들어, 다음과 같은 연속 전달 스타일의 JavaScript를 최신 비동기 사용 가능 C#으로 다시 작성하는 방법은 무엇입니까?

자바 스크립트 :

function ReturnItAsync(message, callback) { 
    setTimeout(function(){ callback(message); }, 1000); 
} 

C# -5.0 :

public static async Task<string> ReturnItAsync(string it) { 
    //return await ... ? 
} 

답변

5

AsyncCTP는 TaskEx.Delay있다. 이것은 작업에 타이머를 래핑합니다. 이것은 제작 준비가되어 있지 않은 코드입니다. TaskEx은 C# 5 도착시 Task으로 병합됩니다.

private static async Task ReturnItAsync(string it, Action<string> callback) 
{ 
    await TaskEx.Delay(1000); 
    callback(it); 
} 

또는 당신은 반환 할 경우 it :

private static async Task<string> ReturnItAsync(string it, Func<string, string> callback) 
{ 
    await TaskEx.Delay(1000); 
    return callback(it); 
}