Re: Task.WaitAny тасков + еще чтото
От: m2user  
Дата: 17.09.23 10:01
Оценка: 7 (2) +1
У Task есть свойство AsyncWaitHandle типа WaitHandle.
Составляешь массив из них + AuthResetEvent + CancellationToken.WaitHandle (чтобы была возможность отменить ожидание без timeout).
И передаешь в WaitHandle.WaitAny.

Можно и наоборот AuthResetEvent в Task обернуть, но мне такой способ меньше нравится. Но если нужно асинхронное ожидание, то следует смотреть в эту сторону.
Task.WaitAny тасков + еще чтото
От: Barbar1an Украина  
Дата: 17.09.23 09:10
Оценка:
а как можно ождать заверщения нескольких тасков плюс какого-то события типа AuthResetEvent?

мне это нужно чтобы ждать либо таски либо событие которое происходит переиодически и не влазит в концепцию таска

и без таймаута)с таймаутом все умеют
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Отредактировано 17.09.2023 9:10 Barbar1an . Предыдущая версия .
Re: Task.WaitAny тасков + еще чтото
От: Mr.Delphist  
Дата: 17.09.23 13:02
Оценка:
Здравствуйте, Barbar1an, Вы писали:

B>мне это нужно чтобы ждать либо таски либо событие которое происходит переиодически и не влазит в концепцию таска


Я бы попробовал сделать нечто, что сигналило бы cancelation token у тасков. Тогда получается:
* если пришёл досрочный event — дёргает токены чтобы незавершённые таски схлопнулись
* иначе все таски успешно дорабатывают свои unit of work и всё равно схлопываются
Re: Task.WaitAny тасков + еще чтото
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 17.09.23 17:33
Оценка:
Здравствуйте, Barbar1an, Вы писали:

B>а как можно ождать заверщения нескольких тасков плюс какого-то события типа AuthResetEvent?


B>мне это нужно чтобы ждать либо таски либо событие которое происходит переиодически и не влазит в концепцию таска


B>и без таймаута)с таймаутом все умеют


Ну есть TaskCompletionSource а с помощью его можно делать очень много
https://learn.microsoft.com/ru-ru/dotnet/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern

или
https://learn.microsoft.com/ru-ru/dotnet/standard/asynchronous-programming-patterns/interop-with-other-asynchronous-patterns-and-types
https://learn.microsoft.com/ru-ru/dotnet/api/system.threading.semaphoreslim.waitasync?view=net-7.0
https://devblogs.microsoft.com/pfxteam/building-async-coordination-primitives-part-2-asyncautoresetevent/

https://gist.github.com/AArnott/1084951
и солнце б утром не вставало, когда бы не было меня
Отредактировано 17.09.2023 17:39 Serginio1 . Предыдущая версия . Еще …
Отредактировано 17.09.2023 17:36 Serginio1 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.