Re[21]: Можно ли избавиться от async|await?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 16.12.25 16:40
Оценка:
Здравствуйте, ·, Вы писали:


S>>·>val1 := func1() // "асинхронный" вызов 1 (на самом деле, конечно же нет)

S>>·>val2 := func2() // "асинхронный" вызов 2 (на самом деле, конечно же нет)
S>> C# это Task.WhenAll
·>Зачем ты это мне рассказываешь, да ещё и фигню невтемную говоришь? В данном случае будет как-то так:
·>
·>var r1 = func1();
·>var r2 = func2();
·>System.Console.WriteLine(r1) await(+ await(r2));
·>

·>И эти функции ДОЛЖНЫ быть объявлены как async и быть написаны правильно на всю глубину вызовов, протаскивая async повсюду. Сабж!
·>Это же полная Ж по сравнению с java.

Ну и чем это лучше
Task.WhenAll
await Task.WhenAll(r1,r2);
System.Console.WriteLine(r1.Result+r2.Result);


или

var res = await Task.WhenAll(r1,r2);
System.Console.WriteLine(res[0]+res[1]);


А если мне нужно выполнение первой функции?
Чередование

Часто нужно сделать TimeOut

int timeout = 1000;
var task = SomeOperationAsync();
if (await Task.WhenAny(task, Task.Delay(timeout)) == task) {
    // task completed within timeout
} else { 
    // timeout logic
}
и солнце б утром не вставало, когда бы не было меня
Отредактировано 16.12.2025 16:44 Serginio1 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.