在WPF中循环更改图像源

时间:2013-10-29 08:37:31

标签: c# wpf image

我想在我的程序中循环更改图像源,它是C#代码:

private void Img_MouseLeave(object sender, MouseEventArgs e)
{
    Image image = sender as Image;
    int milliseconds = 500;
    for(int i = 0; i < ImageUris.Count(); i++)
    {
       Thread.Sleep(milliseconds);
       image.Source = new BitmapImage(new Uri(@ImageUris[i], UriKind.Absolute));
    }
}

但问题是当我运行我的程序时窗口被冻结了。窗口没有发生。我想也许它受到线程的影响,但我找不到办法。

1 个答案:

答案 0 :(得分:3)

调用Thread.Sleep将冻结正在运行您的应用程序的MainThread。

使用DispatcherTimer以避免冻结您的申请。

DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += dispatcherTimer_Tick;
dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 500);

private void dispatcherTimer_Tick(object sender, EventArgs e) {
   // assign new source to the Image
}