Size: a a a

2020 September 14

AH

Ayrat Hudaygulov in F# Chat
Vladimir Lozhnikov
я уже давно сишарп не щупал. но вроди если есть асинхронный метод, то внутри его все должно быть асинхронным. в том числе и вызываемые методы. поэтому  async void это просто синтаксический костыль
это костыль для асинхронный обработчиков, которые ТРЕБУЮТ Action делегат
источник

ЕБ

Евгений Бурмистров... in F# Chat
Айрат прав
источник

ЕБ

Евгений Бурмистров... in F# Chat
ты можешь писать async void где угодно, это просто плохая практика потому что его нельзя await'ить и у тебя эксепшны могут в весёлых местах выскочить, но внутри всё может быть хоть синхронным
источник

ЕБ

Евгений Бурмистров... in F# Chat
а вот делегаты которые эвентхендлеры просто не могут быть async Task
источник

ЕБ

Евгений Бурмистров... in F# Chat
короче мне было интересно почему не сделали в C# как в F# если в F# сделали раньше. а теперь ещё странный гемор с .net интеропом. пойду в статью
источник

AH

Ayrat Hudaygulov in F# Chat
Евгений Бурмистров
короче мне было интересно почему не сделали в C# как в F# если в F# сделали раньше. а теперь ещё странный гемор с .net интеропом. пойду в статью
вопрос хороший, но его задавать можно бесконечно. Почему тупли другие, почему рекорды другие, почему асинк другой, почему нулабилити другое… Со всеми этими фичами фшарпу приходится интеропиться
источник

ST

Sergey Tihon in F# Chat
на днях багу ловил, когда в коннекшен пуле монги стали заканчиваться коннекшены
оказалось что отрефакторили синнонный кол в базу на асинхронный и () => {…}
превратился в async () => { …} который закастался к Action и никто не ожидал его выполнения - вот эти Action и запускались в таком количестве пока в пуле не заканчивались коннекшены =)
источник

VL

Vladimir Lozhnikov in F# Chat
в F# асинки - это тоже сахар. это построитель, основанный на монадах. и компилятором разворачивается в ацкую конструкцию
источник

AH

Ayrat Hudaygulov in F# Chat
Sergey Tihon
на днях багу ловил, когда в коннекшен пуле монги стали заканчиваться коннекшены
оказалось что отрефакторили синнонный кол в базу на асинхронный и () => {…}
превратился в async () => { …} который закастался к Action и никто не ожидал его выполнения - вот эти Action и запускались в таком количестве пока в пуле не заканчивались коннекшены =)
отрефакторили на асинк и не изменили возвращаемый тип на Task?
источник

AH

Ayrat Hudaygulov in F# Chat
Vladimir Lozhnikov
в F# асинки - это тоже сахар. это построитель, основанный на монадах. и компилятором разворачивается в ацкую конструкцию
не, ничего там компилятором не разворачивается к слову
источник

AH

Ayrat Hudaygulov in F# Chat
Там всё честно. Что в сорцах, то в IL
источник

AH

Ayrat Hudaygulov in F# Chat
это вот seq { } разворачивается
источник

VL

Vladimir Lozhnikov in F# Chat
ты говоришь про async {} ?
источник

AH

Ayrat Hudaygulov in F# Chat
Vladimir Lozhnikov
ты говоришь про async {} ?
да, я говорю про async { }
источник

VL

Vladimir Lozhnikov in F# Chat
так это же построитель
источник

VL

Vladimir Lozhnikov in F# Chat
разве нет?
источник

AH

Ayrat Hudaygulov in F# Chat
Vladimir Lozhnikov
так это же построитель
да, это билдер. Он работает по правилам билдеров
источник

AH

Ayrat Hudaygulov in F# Chat
что ты видешь в коде AsyncBuilder будет в IL
источник

ST

Sergey Tihon in F# Chat
Ayrat Hudaygulov
отрефакторили на асинк и не изменили возвращаемый тип на Task?
нет, там был делегат который перевадался в сторонний API
а у того апи не было перегрузки для Func<Task> а был только Action т.к. АПИ древний
источник

AH

Ayrat Hudaygulov in F# Chat
там обычные правила работы CE
источник