在事件处理程序中创建延迟 - 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;
}
我有一个 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;
}