Подтвердить что ты не робот

Неблокирующий сон в С# 5.0 (например, setTimeout в JavaScript)

Каков аналог JavaScript setTimeout(callback, milliseconds) для С# в новом стиле async?

Например, как переписать следующий JavaScript-код с продолжением перехода в современный Cync с поддержкой async?

JavaScript:

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

С# -5,0:

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

Ответ 1

AsyncCTP имеет TaskEx.Delay. Это завершает таймеры в вашей задаче. Обратите внимание, что это не готовый к производству код. TaskEx будет слит в Task, когда придет С# 5.

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);
}