이것은 애니메이션 카운트 다운을위한 코드입니다. bandera_countdown == false이면 타이머가 중지되고 다시 설정되어야합니다. 그것은 리셋되지만, 리셋 후에도 countdownStoryboard.Completed + = CountdownTimer_Completed가 실행되기 때문에 백그라운드에서 계속 작동합니다.카운트 다운 애니메이션을 리셋합니다. C# WPF
private void StartCountdown(FrameworkElement target)
{
var countdownAnimation = new StringAnimationUsingKeyFrames();
var countdownStoryboard = new Storyboard();
if (bandera_countdown == true)
{
for (var i = 10; i > 0; i--)
{
var keyTime = TimeSpan.FromSeconds(10 - i);
var frame = new DiscreteStringKeyFrame(i.ToString(), KeyTime.FromTimeSpan(keyTime));
countdownAnimation.KeyFrames.Add(frame);
}
countdownAnimation.KeyFrames.Add(new DiscreteStringKeyFrame(" ", KeyTime.FromTimeSpan(TimeSpan.FromSeconds(11))));
Storyboard.SetTargetName(countdownAnimation, target.Name);
Storyboard.SetTargetProperty(countdownAnimation, new PropertyPath(TextBlock.TextProperty));
countdownStoryboard.Children.Add(countdownAnimation);
countdownStoryboard.Completed += CountdownTimer_Completed;
countdownStoryboard.Begin(this);
}
else
{
countdownStoryboard.Stop();
countdownStoryboard.Remove();
}
}
타이머를 멈추고 10 초 후에 다시 시작할 수 있습니까? 감사합니다.
감사합니다. bandera_countdown은 false로 설정됩니다. 문제가 발생하면 타이머가 10으로 재설정되지만 계속 실행됩니다. 예를 들어, 카운트 다운이 완료되면 (0과 같음) 이벤트 핸들러가 실행되므로 bandera_countdown이 false로 설정된 경우 카운트 다운이 3 초가되어 카운트 다운이 재설정되고 10 초가 표시되고 다시 카운트 다운되기 시작합니다 핸들러가 작동하는 초. 나는 나 자신을 설명 할 지 모르겠다. – user3634248