public static Task BeginAsync(this Storyboard storyboard) { storyboard.ThrowIfNull("storyboard"); var tcs = new TaskCompletionSource <bool>(); EventHandler onComplete = null; onComplete = (s, e) => { // sure ref set to null. storyboard.Completed -= onComplete; tcs.SetResult(true); }; storyboard.Completed += onComplete; storyboard.Begin(); return(tcs.Task); }