1

我想在我的程序中循环更改图像源,它是 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));
    }
}

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

4

1 回答 1

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
}
于 2013-10-29T08:43:22.390 回答