я смотрел видео под названием Becoming a C# Time Lord и в 0:35:36 этот код выскочило:Дважды ждут в одном вызове
async Task<TResult[]> PurelyWhenAll<TResult> (params Task<TResult>[] tasks)
{
var killJoy = new TaskCompletionSource<TResult[]>();
foreach (var task in tasks)
task.ContinueWith(ant =>
{
if (ant.IsCanceled)
killJoy.TrySetCanceled();
else if (ant.IsFaulted)
killJoy.TrySetException(ant.Exception.InnerException);
});
return await await Task.WhenAny(killJoy.Task, Task.WhenAll(tasks));
}
Означает ли это, что задача возвращает задачу и из-за того, что мы имеем double wait? Если это так, что происходит с производительностью, если у нас больше двух ожиданий? Это хорошая практика, если этого избежать?
Пожалуйста, отправьте код как * текст *, а не как изображения. –