Удаление подписки - ожидает завершения действия подписки?
var sub = observable.Subscribe(data => my_action(data));
Когда я избавляюсь sub
Переменная будет отписываться. Хорошо, но при этом будет ждать my_action
закончить, если он уже был вызван?
Обновление 1: я прошу сознательного решения, а не побочных эффектов. Сравните это с Threading.Timer - чтобы дождаться действия, вы должны вызвать специальный Dispose
метод.
Обновление 2: я прошу дождаться окончания действия, а не отменять действие.
2 ответа
Это зависит. Если действие и удаление происходят в одном потоке, удаление будет происходить после завершения действия. Если действие выполняется в другом потоке для удаления, то они происходят независимо, и возможно, что удаление происходит во время выполнения действия.
Если ваш вопрос, будет ли удаление подписки отменять действие, инициированное предварительным наблюдением, ответ будет отрицательным.
РЕДАКТИРОВАТЬ:
Чтобы ответить на ваш уточненный вопрос, краткий ответ - нет. Утилизация назначена немедленно. В зависимости от ситуации с вашим потоком / планировщиком, он либо будет выполнен немедленно, либо будет выполнен при наличии доступного потока.