public void Start(IHostController hostController) { AppHosting.SetupChannel(); var d = new SingleAssignmentDisposable(); if (keepAlive) { d.Disposable = Observable.Interval(TimeSpan.FromMilliseconds(500)) .Subscribe(i => { try { if (!hostController.isAlive()) { d.Dispose(); Process.GetCurrentProcess().Kill(); } } catch (Exception err) { dbg.Error(err); Process.GetCurrentProcess().Kill(); } }); } var live555 = new Live555(videoBuffer, metadataReceiver); live555.Play(mediaStreamInfo, playbackController); d.Dispose(); }