C# 在后台运行任务时,如何在WPF中旋转图像?

C# 在后台运行任务时,如何在WPF中旋转图像?,c#,wpf,C#,Wpf,我有一个WPF应用程序,其中有一个开始按钮,它执行一些web服务调用,返回一些结果,我使用oxyplot绘制在图形上。我在UI上有一个图像,我想在任务完成之前将其用作“微调器” 我可以使用按钮点击路由事件来旋转我的图像,但我希望它一直旋转,直到我的web服务调用完成。有什么建议吗 <Button.Triggers> <EventTrigger RoutedEvent="Button.Click"> <Begi

我有一个WPF应用程序,其中有一个开始按钮,它执行一些web服务调用,返回一些结果,我使用oxyplot绘制在图形上。我在UI上有一个图像,我想在任务完成之前将其用作“微调器”

我可以使用按钮点击路由事件来旋转我的图像,但我希望它一直旋转,直到我的web服务调用完成。有什么建议吗

 <Button.Triggers>
            <EventTrigger RoutedEvent="Button.Click">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetName="capIcon" Storyboard.TargetProperty="RenderTransform.Angle" By="90" Duration="0:0:1" />
                        <DoubleAnimation Storyboard.TargetName="capIcon" Storyboard.TargetProperty="RenderTransform.Angle" By="90" Duration="0:0:1" />
                        <DoubleAnimation Storyboard.TargetName="capIcon" Storyboard.TargetProperty="RenderTransform.Angle" By="90" Duration="0:0:1" />
                        <DoubleAnimation Storyboard.TargetName="capIcon" Storyboard.TargetProperty="RenderTransform.Angle" By="90" Duration="0:0:1" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Button.Triggers>

下面是我的按钮点击方法:

      private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        if (!validateThreadCount())
        return;

        RunTimes.runTimes.Clear();
        //this.Plot.InvalidateFlag = 1;
        int threads = Convert.ToInt16(this.ThreadCount.Text);

        Task[] tasks =  new Task[threads];
        for (int i = 0; i < threads; i++)
        {
            DealClient dealClient = new DealClient();
            var t = Task.Factory.StartNew(() => dealClient.NewDeal(1));
            tasks[i] = t;
        }

        Task.WaitAll(tasks);

        var points = new List<ScatterPoint>();
        for (int i = 0; i < RunTimes.runTimes.Count; i++)
        {
            points.Add(new ScatterPoint(RunTimes.runTimes[i].Milliseconds, i, 3));
        }

        this.pts.ItemsSource = points;

    }
private void按钮\u单击\u 1(对象发送者,路由目标)
{
如果(!validateThreadCount())
返回;
RunTimes.RunTimes.Clear();
//this.Plot.InvalidateFlag=1;
int threads=Convert.ToInt16(this.ThreadCount.Text);
任务[]任务=新任务[线程];
对于(int i=0;idealClient.NewDeal(1));
任务[i]=t;
}
Task.WaitAll(任务);
var points=新列表();
for(int i=0;i
您需要使用异步和等待方法来处理事件。我没有足够的代码为您提供专有名称,但这就是我解决问题的方法

Private async Task MethodThatHandlesEvent()
{
 await Task.Run(() => 
     {
         RunWebService();
            While(WebServiceIsRunning)
            {MakeImagesSpin();}
     });
}

Private async void MyButton_Click()
{
    await MethodThatHandlesEvent();
}

谢谢,这很有帮助,现在我只需要弄清楚如何从C旋转图像#