Re[8]: ContinueWith
От: Ночной Смотрящий Россия  
Дата: 15.01.20 15:03
Оценка:
Здравствуйте, TK, Вы писали:

TK>Это карго-культ, а не педантизм.


Этот карго-культ экономит много времени на глупых трудновылавливаемых ошибках, вызванных забытым await. Оно, кстати, не только при просмотре кода полезно, решарпер использует наличие суффикса в одном из своих анализов на предмет как раз забытого await.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[9]: ContinueWith
От: alexzzzz  
Дата: 29.01.20 11:25
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Этот карго-культ экономит много времени на глупых трудновылавливаемых ошибках, вызванных забытым await. Оно, кстати, не только при просмотре кода полезно, решарпер использует наличие суффикса в одном из своих анализов на предмет как раз забытого await.


Ещё, когда я вызывают метод Task<T> DoSomethingAsync(), то ожидаю, что вернувшийся таск уже работает и надо только дождаться результата. А если DoSomething() возвращает Task, то большой вопрос, что с ним делать, запускать самому или он уже запущен и где-то работает. Интуитивно ожидается, то вернувшийся таск пока не запущен либо уже синхронно выполнился — непонятно короче.

using System;
using System.Threading;
using System.Threading.Tasks;

internal class Program
{
    private static async Task Main(string[] args)
    {
        var task = DoSomething();
        //task.Start();
        Console.WriteLine("waiting...");
        var result = await task;

        Console.WriteLine(result);
    }

    private static Task<int> DoSomething()
    {
        return new Task<int>(() =>
        {
            Thread.Sleep(1000);
            return 42;
        });
    }
}
Отредактировано 29.01.2020 11:33 alexzzzz . Предыдущая версия . Еще …
Отредактировано 29.01.2020 11:32 alexzzzz . Предыдущая версия .
Отредактировано 29.01.2020 11:30 alexzzzz . Предыдущая версия .
Отредактировано 29.01.2020 11:27 alexzzzz . Предыдущая версия .
Re[2]: Зачем нужен ContinueWith, если в {} можно поместить обе задачи
От: Passerby  
Дата: 29.01.20 21:14
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, Passerby, Вы писали:


P>>Но зачем нужен ContinueWith, если можно сразу выполнить обе задачи поместив их в один Task?

P>>В каких случаях так нельзя сделать и нужно применять ContinueWith?

TK>Очевидно, что ContinueWith будет полезен во всех остальных случаях, когда обе задачи нельзя поместить в один Task

Вопрос в том и состоит: когда обе задачи, выполняющиеся последовательно друг за другом и помещенные в разные Task, нельзя поместить в один Task?
Для себя решил, когда библиотека возвращает Task.
Re[2]: Зачем нужен ContinueWith, если в {} можно поместить о
От: Passerby  
Дата: 02.02.20 13:13
Оценка:
Отредактировано 02.02.2020 13:16 Passerby . Предыдущая версия .
Re: Зачем нужен ContinueWith, если в {} можно поместить обе задачи
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 18.04.20 12:25
Оценка:
Здравствуйте, Passerby, Вы писали:

Много примеров

https://docs.microsoft.com/ru-RU/dotnet/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern
Например Операции с чередованием
и солнце б утром не вставало, когда бы не было меня
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.