2011-10-02 13 views
11

Qual è l'analogico di JavaScript setTimeout(callback, milliseconds) per il C# in un nuovo stile "asincrono"?Non bloccante sleep in C# 5.0 (come setTimeout in JavaScript)

Ad esempio, come riscrivere il seguente codice JavaScript in stile passaggio continuo in C# moderno abilitato per async?

JavaScript:

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

C# -5.0:

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

risposta

5

AsyncCTP ha TaskEx.Delay. Questo avvolge i timer nel tuo compito. Nota che questo non è un codice pronto per la produzione. TaskEx verrà unito a Task quando arriva il numero C# 5.

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

Oppure, se si vuole tornare it:

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