C#5.0中的非阻塞睡眠(类似于JavaScript中的setTimeout)

Art*_*zor 11 c# c#-5.0

setTimeout(callback, milliseconds)在新的"异步"风格中,C#的JavaScript模拟是什么?

例如,如何将以下延续传递式JavaScript重写为现代异步启用的C#?

JavaScript的:

function ReturnItAsync(message, callback) {
    setTimeout(function(){ callback(message); }, 1000);
}
Run Code Online (Sandbox Code Playgroud)

C#-5.0:

public static async Task<string> ReturnItAsync(string it) {
    //return await ... ?
}
Run Code Online (Sandbox Code Playgroud)

Ili*_*ian 5

AsyncCTP有TaskEx.Delay.这会将计时器包含在您的任务中.请注意,这不是生产就绪代码.TaskExTask在C#5到来时合并.

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

或者如果你想返回it:

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