C# 在事件处理程序-C中创建延迟#

C# 在事件处理程序-C中创建延迟#,c#,wpf,events,uri,C#,Wpf,Events,Uri,我在C#中有一个WPF应用程序。当有人触摸图像(image1)时,我希望图像更改(image2),延迟2秒,最后更改为image3 我的代码如下所示: private void ImageName_TouchDown(object sender, TouchEventArgs e) { BitmapImage image = new BitmapImage(new Uri("c:/3.jpg", UriKind.Absolute)); ImageName

我在C#中有一个WPF应用程序。当有人触摸图像(image1)时,我希望图像更改(image2),延迟2秒,最后更改为image3

我的代码如下所示:

private void  ImageName_TouchDown(object sender, TouchEventArgs e)
    {
        BitmapImage image = new BitmapImage(new Uri("c:/3.jpg", UriKind.Absolute));
        ImageName.Source =image;
        Thread.Sleep(2000);
        image = new BitmapImage(new Uri("c:/4.jpg", UriKind.Absolute));
        ImageName.Source = image;
    }

我延迟了工作时间,但似乎c#只更新image3(4.jpg)。就像它无法在事件处理程序中更新图像源一样。我该怎么办?

您可以使事件处理程序异步,并使用
Task.Delay
而不是
Thread.Sleep

private async void ImageName_TouchDown(object sender, TouchEventArgs e)
{
    BitmapImage image = new BitmapImage(new Uri("c:/3.jpg", UriKind.Absolute));
    ImageName.Source =image;
    await Task.Delay(2000);
    image = new BitmapImage(new Uri("c:/4.jpg", UriKind.Absolute));
    ImageName.Source = image;
}

效果很好。非常感谢。