【问题标题】:Create Delay in Event Handler - C# [duplicate]在事件处理程序中创建延迟 - C# [重复]
【发布时间】:2020-02-12 15:09:54
【问题描述】:

我有一个 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)。就像它无法更新事件处理程序中的图像源一样。我该怎么办?

【问题讨论】:

    标签: c# wpf events uri


    【解决方案1】:

    您可以使您的事件处理程序异步,并使用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;
    }
    

    【讨论】:

    • 效果很好。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    相关资源
    最近更新 更多