Не секрет, что мы можем использовать метод ContinueWith для небольшого увеличения производительности. Давно об этом знал, но всё руки не доходили протестировать. Так вот, докладываю.
Делается это просто - мы можем вызвать наш асинхронный метод, а затем, не используя
await, написать что-то вроде:
MyAsyncMethod(cancellation).ContinueWith(task => DoSomething(task.Result), cancellation);
Это будет несколько быстрее, чем:
var result = await MyAsyncMethod(cancellation);
DoSomething(result);
Отлично применяется с известной многим сущностью
Result<T>, где, в зависимости от этого результата нужно что-то сделать или не сделать.Напомню, что минусом применения подхода с
ContinueWith является то, что логи с ошибками становятся немного... плохо читаемыми.P.S.: Бенчмарк в комментариях.
P.P.S: Алексею и Игорю спасибо) Было весело это всё отлаживать.
