public async Task AnimationEndAsync(string propertyName) { if (currentStyleNames != null) { if (!currentStyleNames.Remove(propertyName)) { Console.WriteLine("样式移除失败:" + propertyName + ",还有" + currentStyleNames.Count + "个样式等待移除"); } else { Console.WriteLine($"{propertyName}移除成功,还有{currentStyleNames.Count }个样式等待移除"); while (currentStyleNames.Contains(propertyName)) { currentStyleNames.Remove(propertyName); } if (currentStyleNames.Any()) { return; } } } if (!animating) { return; } animating = false; if (paths == null || !paths.Any()) { if (OnAllEnd.HasDelegate) { await OnAllEnd.InvokeAsync(null); } return; } currentPath = paths.Dequeue(); if (currentPath.Pause.HasValue && currentPath.Pause.Value) { if (OnPause.HasDelegate) { await OnPause.InvokeAsync(null); } taskTrigger = new TaskCompletionSource <int>(); await taskTrigger.Task; taskTrigger = null; } await Task.Delay(currentPath.Delay); styleBuilder.Remove("transition").Add($"transition:all {(currentPath.Duration <= 0 ? 1000 : currentPath.Duration)}ms ease"); ExecuteAnimation(currentPath.Style, currentPath.Increment); }