|
Не могу понять тут один паттерн с Task
|
|||
---|---|---|---|
#18+
Сегодня надо было сделать немного рисёрч, на немного экзотичную тему - сдружить Task-овую асинхронность со старым паттерном асинхронного вызова, кто-нибудь из старперов-дотнетчиков наверняка знает - это всякий IAsyncResult/BeginXXX(...)/EndXXX(...). Ну, это ладно, суть, в общем-то не в этом. Я несколько раз сегодня пока в связи с этим гуглил наткнулся на такую вот идиому, суть которой, если выкинуть детали, в таком: Код: c# 1. 2. 3.
То, что оно делает, совершенно понятно. Но чего никак не могу понять, это чем это отличается от просто: Код: c# 1.
И, ладно бы, я это просто случайно увидел у какого-нибудь индуса, но я это сегодня видел местах в трех, вот и весьма заинтересовало. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 21:27 |
|
Не могу понять тут один паттерн с Task
|
|||
---|---|---|---|
#18+
fkfka, Ещё есть простое решение: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
fkfka То, что оно делает, совершенно понятно. Но чего никак не могу понять, это чем это отличается от просто: Ну это переводит состояние таски, асинхронно. На этом в принципе строится стейтмашина. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2021, 21:32 |
|
Не могу понять тут один паттерн с Task
|
|||
---|---|---|---|
#18+
hVostt, У меня задача прямо диаметральная - таск в "старый" асинк. Но, с самой-то задачей все абсолютно понятно, могу сделать и туда и сюда, без вопросов. Меня заинтересовало именно, что тут, в данном примере, надо просто создать "сразу конченный" таск, и зачем, вот, пассажиры создают его таким извилистым способом, как я привел, а не просто через FromResult(...). Может тут есть какое-то тайное знание, которым я не владею. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2021, 15:46 |
|
Не могу понять тут один паттерн с Task
|
|||
---|---|---|---|
#18+
fkfka, Через FromResult ты генеришь сразу завершённую таску, ни о каком асинхронном взаимодействии тут речи нет. Используются тогда, когда ты сразу можешь отдать готовый результат. Если же ты уже начал асинхронное взаимодействие через TCS, то будь добр веди до конца. Т.е. именно в твоём случае, TCS не нужен, так как отдаёшь результат 100% синхронно, а Task выступает лишь обёрткой для готового результата. В данном случае можно FromResult. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2021, 22:11 |
|
Не могу понять тут один паттерн с Task
|
|||
---|---|---|---|
#18+
hVostt Через FromResult ты генеришь сразу завершённую таску, Ну а так, что ( не я) генерю: fkfka Код: c# 1. 2. 3.
Что там будет в "task? Да та же самая законченная таска, которую я получу через FromResult. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2021, 22:29 |
|
Не могу понять тут один паттерн с Task
|
|||
---|---|---|---|
#18+
hVostt В данном случае можно FromResult. Ну так и я о том же. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2021, 22:31 |
|
|
start [/forum/topic.php?fid=20&msg=40073953&tid=1398280]: |
0ms |
get settings: |
17ms |
get forum list: |
7ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
23ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
192ms |
get tp. blocked users: |
1ms |
others: | 330ms |
total: | 579ms |
0 / 0 |