Re[6]: Образцово-показательный интерфейс для EventBus
От: Shmj Ниоткуда  
Дата: 24.11.21 10:48
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>В смиысле где? Нормально спроектированное асинк API его обычно содержит в параметрах всех методов.


Пояснил на примере, там где !!!! — вопрос:

        static void SubscribeAsync(Func<string, CancellationToken, Task> eventHandler,
            CancellationToken cancellation = default)
        {
            // Тут словили событие (для упрощения string)
            string eventMessage = "event1";

            // Теперь вызываете eventHandler не дожидаясь выполнения (чтобы продолжать отлавливать новые события).
            _ = Task.Factory.StartNew(() =>
            {
                CancellationToken cancellation2 = CancellationToken.None;

                // !!!! А вот при вызове eventHandler нужен этот другой cancellation2, который отменит eventHandler, а не процесс подписки!
                await eventHandler(eventMessage, cancellation2);
                // тут подтверждаем обработку.
            });
        }
Отредактировано 24.11.2021 11:00 Shmj . Предыдущая версия . Еще …
Отредактировано 24.11.2021 10:50 Shmj . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.