public void Update(TaskProgress progress) { Trace($"Update progress: {progress}"); Task.Progress = progress; switch (progress) { case TaskProgress.Acknowledged: WhenAcknowledged.SetComplete(); break; case TaskProgress.Confirmed: WhenAcknowledged.SetComplete(); WhenCompleted.SetComplete(); break; case TaskProgress.Timeout: WhenAcknowledged.Timeout(); WhenCompleted.Timeout(); break; case TaskProgress.Failed: WhenAcknowledged.Fail(); WhenCompleted.Fail(); break; case TaskProgress.Cancelled: WhenAcknowledged.SetComplete(); WhenCompleted.Cancel(); break; } }