Size: a a a

2021 March 21

G

Gradi in pro.net
Andrei Kurosh
А ты уверен, что если будет исключение, то ты хочешь закешировать упавший таск, а не дать следующему запросу попробовать еще раз?
Да, с такой стороны не подумал) Исключение же тоже закешируется во-втором случае.
источник

Dv

Dr. Friedrich von Ne... in pro.net
Andrei Kurosh
А ты уверен, что если будет исключение, то ты хочешь закешировать упавший таск, а не дать следующему запросу попробовать еще раз?
Я бы сделал обязанностью получателя удалить таску в таком случае. Т.е. она бы какое-то время пролежала в кэше и могла бы достаться нескольким получателям, щито поделать.
источник

Dv

Dr. Friedrich von Ne... in pro.net
Собственно, там по ссылке в гист так и написано :)
источник

AK

Andrei Kurosh in pro.net
Dr. Friedrich von Never
Собственно, там по ссылке в гист так и написано :)
источник

Dv

Dr. Friedrich von Ne... in pro.net
Ага.
источник

AK

Andrei Kurosh in pro.net
Ну так оно само удоляется, пользователь ничего делать не должен. Или про что ты?
источник

Dv

Dr. Friedrich von Ne... in pro.net
Andrei Kurosh
Ну так оно само удоляется, пользователь ничего делать не должен. Или про что ты?
Я имею в виду, что её удалит тот воркфлоу, который напоролся на ошибку.
источник
2021 March 22

IC

Ilya L Che in pro.net
А зачем делать await? Разве после TrySetResult  нельзя просто так его вернуть?
tcs.TrySetResult(value);
return await tcs.Task;
источник

AK

Alex Kiev in pro.net
Ilya L Che
А зачем делать await? Разве после TrySetResult  нельзя просто так его вернуть?
tcs.TrySetResult(value);
return await tcs.Task;
Колстек сберечь
источник

K

Katz in pro.net
Ilya L Che
А зачем делать await? Разве после TrySetResult  нельзя просто так его вернуть?
tcs.TrySetResult(value);
return await tcs.Task;
Мне кажется, что Fowler раньше топил за такой подход с явным async, чтобы избежать возможных багов с забытым using по неосторожности.

И плюс это в принципе более понятный код кому-то.
источник

Dv

Dr. Friedrich von Ne... in pro.net
Ilya L Che
А зачем делать await? Разве после TrySetResult  нельзя просто так его вернуть?
tcs.TrySetResult(value);
return await tcs.Task;
Но разве ты не скопировал то, что там уже написано?
источник

IC

Ilya Chernoudov in pro.net
Ilya L Che
А зачем делать await? Разве после TrySetResult  нельзя просто так его вернуть?
tcs.TrySetResult(value);
return await tcs.Task;
Нельзя вернуть таск, когда у тебя async метод
источник

Dv

Dr. Friedrich von Ne... in pro.net
Ilya Chernoudov
Нельзя вернуть таск, когда у тебя async метод
Верно.
источник

K

Katz in pro.net
Но тот async метод можно сделать не async, и вернуть Task
источник

IC

Ilya Chernoudov in pro.net
Katz
Но тот async метод можно сделать не async, и вернуть Task
Тогда там не сделать await! Замкнутый круг!
источник

IC

Ilya Chernoudov in pro.net
Но можно вернуть value
источник

Dv

Dr. Friedrich von Ne... in pro.net
Katz
Но тот async метод можно сделать не async, и вернуть Task
Как?
источник

Dv

Dr. Friedrich von Ne... in pro.net
Ilya Chernoudov
Но можно вернуть value
Ок, можно, хорошая оптимизация.

Однако, при некоторой модификации кода (когда ты добавишь инвалидацию кэша) и на некоторых рантаймах non-awaited task может начать стрелять.
источник

Dv

Dr. Friedrich von Ne... in pro.net
Я не уверен, что это важно в 2021 году, впрочем.
источник

IC

Ilya Chernoudov in pro.net
Dr. Friedrich von Never
Ок, можно, хорошая оптимизация.

Однако, при некоторой модификации кода (когда ты добавишь инвалидацию кэша) и на некоторых рантаймах non-awaited task может начать стрелять.
Что то не проникся проnone awaited task. Никогда не видел упоминаний об этом.
источник