static void Bootstrapper_PipelineRefreshed(object sender, PipelineRefreshEventArgs e) { Console.WriteLine("{0}tarting pipeline", Subscription == null ? "S" : "Re"); Subscription?.Dispose(); try { IConnectableObservable <Message> observable = Bootstrapper.PipelineRoot.Pipeline.Publish(); observable.Connect(); Subscription = observable.SubscribeOn(TaskPoolScheduler.Default).Subscribe <Message>( msg => RegisterMessage(msg), ex => LogError(ex), () => Console.WriteLine("Pipeline completed") ); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
static void Bootstrapper_PipelineRefreshed(object sender, PipelineRefreshEventArgs e) { Console.WriteLine("Starting pipeline"); stoppingTokenSource?.Cancel(); stoppingTokenSource = new CancellationTokenSource(); try { IConnectableObservable <Message> observable = Bootstrapper.PipelineRoot.Pipeline.Publish(); observable.Connect(); observable.SubscribeOn(TaskPoolScheduler.Default).Subscribe <Message>( msg => EOLMessage(msg), ex => LogError(ex), () => Console.WriteLine("Pipeline completed"), stoppingTokenSource.Token ); } catch (Exception ex) { logger.Error(ex, "{0} thrown when running pipeline: {1}", ex.GetType().Name, ex.Message); } }
private void Bootstrapper_PipelineRefreshed(object sender, PipelineRefreshEventArgs e) { // Stop the current pipeline, which will make ExecuteAsync() loop and restart with the new pipeline. tokenSource.Cancel(); }