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

Create Delay in Event Handler - C#

我有一个 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;
}