2011-10-02 16 views
11

Co jest analogiem JavaScript's setTimeout(callback, milliseconds) dla C# w nowym stylu "asynchronizacji"?Nonblocking sleep w C# 5.0 (jak setTimeout w JavaScript)

Na przykład, jak przepisać poniższy kod JavaScript z kontynuacją na styl współczesny C#?

JavaScript:

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

C# -5,0:

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

Odpowiedz

5

AsyncCTP ma TaskEx.Delay. To otacza zegary w twoim zadaniu. Pamiętaj, że nie jest to kod produkcyjny. TaskEx zostanie scalony w Task po przybyciu C# 5.

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

Lub jeśli chcesz powrócić it:

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