public void Run(CancellationToken cancellationToken, params Task[] tasks)
{
var registration = cancellationToken.Register(() => m_poller.Stop(), true);
Task.WhenAll(tasks).ContinueWith(t => m_poller.Stop(), cancellationToken);
m_poller.Run(m_synchronizationContext);
registration.Dispose();
}