У меня есть следующие TPL задачаКаков правильный способ сохранения активной задачи и всех подписчиков без вращения?
public abstract class AggregatorBase : IAggregator
{
public void Start(CancellationToken token)
{
var parent = Task.Factory.StartNew(x =>
{
Aggregate(token);
},TaskCreationOptions.LongRunning, token);
parent.Wait();
}
public abstract void Aggregate(CancellationToken ct);
}
в агрегированной реализации методы у меня есть ряд Observable.Subscription который заканчивается со следующим
public override void Aggregate(CancellationToken ct)
{
this.observables.Subscribe(// Do stuff);
this.observables.Subscribe(// Do more stuff);
while (!token.IsCancellationRequested)
{
System.Threading.Thread.Sleep(1000)
}
}
Вопросом является, Что лучшим способом сохранить Целевую живой и все подписки активны без вращения?
Я в замешательстве - почему вы вообще блокируете или спите, если используете Rx –
Я думаю, что он означает, что он запускает задачу, эта задача устанавливает подписки Rx, но тогда он не хочет, чтобы эта задача продолжить и завершить. Поэтому он не блокирует внутри самих обратных вызовов подписки, а внутри задачи, которая устанавливает подписки. – Tyson
@ Тайсон, но почему? Я согласен с Полом Бетцем. Похоже, что неправильное использование/непонимание Rx мне –