2016-12-23 22 views
2
var sub = observable.Subscribe(data => my_action(data)); 

Когда я распоряжаюсь переменной sub, она отменит подписку. Хорошо, но при этом он будет ждать my_action, чтобы закончить, если он уже был вызван?Устранение подписки - дожидается ли действие подписки?

Обновление 1: Я прошу сознательного решения, а не некоторые побочные эффекты. Сравните это с Threading.Timer - для того, чтобы ждать действия, вы должны вызвать специальный метод Dispose.

Update 2: Я прошу ждет действий до конца, не отменить действие.

+0

Код внутри 'my_action' должен был бы иметь явный механизм отмены для его отмены. В противном случае, если бы он прервал поток, который мог вызвать всевозможные проблемы в вашем коде. – Enigmativity

+0

@ Энигматичность, см. Мое обновление, ожидание! = Отмена. – astrowalker

ответ

3

Это зависит. Если действие и удаление происходят в одном и том же потоке, то удаление произойдет после завершения действия. Если действие выполняется в другом потоке в распоряжение, то они происходят независимо друг от друга и возможно, что удаление произойдет во время выполнения действия.

+0

Благодарим вас за ответ, так, другими словами, у утилизации есть какой-либо код, чтобы ждать действия, правильно? :-) См. Мое замечание о таймере. – astrowalker

+0

@astrowalker - Что означает «удаление имеет какой-либо код для ожидания действия»? – Enigmativity

+0

@ Энигматизм, извините, пропустил «нет», он должен читать «избавление» ** не ** есть ... ». Это означает, что я перефразировал, и я говорю, что удаление не дожидается завершения действия, потому что оно не содержит никакого кода, ответственного за обработку ожидания. – astrowalker

3

Если у вас есть вопрос, будет ли снятие подписки отменено действие, вызванное предыдущим наблюдением, ответ будет отрицательным.

EDIT:

Чтобы ответить на ваш вопрос осветленный, короткий ответ: нет. Утилизация запланировано немедленно. В зависимости от ситуации с потоком/планировщиком он будет либо немедленно выполнен, либо выполнен, когда есть доступный поток.

+0

Спасибо, но мой вопрос касается ожидания, а не отмены. – astrowalker

+0

Обновлено для уточнения. – Shlomo