Что происходит при удалении StreamReader, когда BeginRead активирован?C#

Место общения программистов C#
Ответить
Anonymous
 Что происходит при удалении StreamReader, когда BeginRead активирован?

Сообщение Anonymous »

У меня пока нет кода, изучаю архитектуру.
Представьте, что я открываю поток для чтения и активирую асинхронный BeginRead (ожидается, что поток будет «добавлен» " через некоторое время). Затем в какой-то момент что-то происходит, и я должен закрыть поток и открыть другой. Кажется, здесь важен логический аргумент Dispose, но что произойдет, если я попытаюсь удалить поток, который в настоящее время находится в обратном вызове, где осуществляется доступ к потоку? Конечно, этот вопрос имеет значение, только если обратный вызов находится в другом потоке (в чем я не уверен, но не вижу другого способа организации обратных вызовов).
Обновление: спасибо Панайотису за комментарий. Позвольте мне уточнить.
Я создаю несколько читателей и должен иметь дело с потоками, одновременно получая обновления для них и пересылая их на какой-то API.
Для этого Я открываю читалки и «вооружаю» BeginRead обратным вызовом, который затем вызывается, когда в потоке появляются какие-то данные. Этот обратный вызов выполняет EndRead, а затем «перезагружает» BeginRead для получения дополнительных данных.
Но основной цикл отслеживает определенные условия и может решить, что этот поток не нужен. больше и должен отменить его. Вы сказали, что решением может быть «токен отмены», и у меня с ним проблема. Я не понимаю, о чем они и как их правильно использовать. Описание говорит само за себя - я что-то делаю с этим токеном, чтобы дать читателю сигнал об отмене, и эта сигнальная операция должна вернуться после завершения очистки активности?

Подробнее здесь: https://stackoverflow.com/questions/793 ... d-is-armed
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»