Show a Continuous Animation During an Asynchronous Process : Animation « Windows Presentation Foundation « C# / CSharp Tutorial






<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="WPF" Height="220" Width="180">
    <Window.Resources>
        <Storyboard  x:Key="PulseStoryboard" AutoReverse="True" >
            <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)">
                <SplineColorKeyFrame KeyTime="00:00:00.5000000" Value="Lime"/>
            </ColorAnimationUsingKeyFrames>
            <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)">
                <SplineColorKeyFrame KeyTime="00:00:00.5000000" Value="Green"/>
            </ColorAnimationUsingKeyFrames>
        </Storyboard>
    </Window.Resources>

    <Grid x:Name="LayoutRoot" >
        
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="60" />
        </Grid.RowDefinitions>
      
        <Ellipse Width="100" Height="100" Margin="10" Stroke="{x:Null}" x:Name="ellipse">
            <Ellipse.Fill>
                <RadialGradientBrush GradientOrigin="0.25,0.25">
                    <GradientStop Offset="0" Color="Red"/>
                    <GradientStop Offset="1" Color="Blue"/>
                </RadialGradientBrush>
            </Ellipse.Fill>
        </Ellipse>
       
        <Button Margin="10" Content="Start" Grid.Row="1" x:Name="button" Click="button_Click"/>
    </Grid>
</Window>
//File:Window.xaml.cs

using System.Windows;

using System.Threading;
using System.ComponentModel;
using System.Windows.Media.Animation;

namespace WpfApplication1
{
    public partial class Window1 : Window
    {
        private Storyboard pulseStoryboard;
        private BackgroundWorker worker;

        public Window1()
        {
            InitializeComponent();

            pulseStoryboard = (Storyboard) this.Resources["PulseStoryboard"];
            pulseStoryboard.RepeatBehavior = RepeatBehavior.Forever;
            worker = new BackgroundWorker();

            worker.DoWork += new DoWorkEventHandler(worker_DoWork);
            worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
        }

        private void button_Click(object sender, RoutedEventArgs e)
        {
            pulseStoryboard.Begin(this, true);
            worker.RunWorkerAsync();
            button.IsEnabled = false;
        }

        private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            button.IsEnabled = true;
            pulseStoryboard.Stop(this);
        }

        private void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            for(int i = 1; i <= 50; i++)
            {
                Thread.Sleep(100);
            }
        }
    }
}
WPF Show A Continuous Animation During An Asynchronous Process








24.108.Animation
24.108.1.Two AnimationsTwo Animations
24.108.2.Animate RenderTransform AngleAnimate RenderTransform Angle
24.108.3.Animation In StyleAnimation In Style
24.108.4.Animation without acceleration or decelerationAnimation without acceleration or deceleration
24.108.5.XAML Only AnimationXAML Only Animation
24.108.6.Control Animations Through TriggersControl Animations Through Triggers
24.108.7.Four Sided BounceFour Sided Bounce
24.108.8.Matrix Animated ButtonMatrix Animated Button
24.108.9.KeySpline AnimationKeySpline Animation
24.108.10.Repetition countRepetition count
24.108.11.Repetition durationRepetition duration
24.108.12.Rotate Button AnimationRotate Button Animation
24.108.13.Rotate Button Animation With LayoutRotate Button Animation With Layout
24.108.14.A simple, finite animationA simple, finite animation
24.108.15.Animation with codeAnimation with code
24.108.16.Animation In CodeAnimation In Code
24.108.17.A Simple Animation in CodeA Simple Animation in Code
24.108.18.Remove Animations with AnimationClockRemove Animations with AnimationClock
24.108.19.Remove AnimationsRemove Animations
24.108.20.Control the Progress of an AnimationControl the Progress of an Animation
24.108.21.Timer triggered AnimationTimer triggered Animation
24.108.22.Show a Continuous Animation During an Asynchronous ProcessShow a Continuous Animation During an Asynchronous Process
24.108.23.Receive Notification When an Animation CompletesReceive Notification When an Animation Completes