间隔后取出Web图像并在Image控件中显示 - 不工作

时间:2017-07-03 10:02:47

标签: c# .net wpf image

我有一个带有Image控件的自定义UserControl。我正在尝试从Web [网络服务器]获取图像并在我的控件中显示它,使用调度程序计时器刷新源。这是代码:

  void StartSourceRefresh()
    {
        if (timeinterval < 1) timeinterval = 1;
        tmrRefresh.Tick += new EventHandler(dispatcherTimer_Tick);
        tmrRefresh.Interval = new TimeSpan(0, 0, timeinterval); //in hour-minute-second
        tmrRefresh.Start();
    }

    public void ChangeImageSource(string newSource)
    {
        //newSource = "http://192.168.1.3/abc/imagetobeshown.png"

        WebImg.Source = null;

        if (newSource.Trim() == "")
            WebImg.Source = new BitmapImage(new Uri(@imagePlaceholder, UriKind.Absolute));
        else
        {
            BitmapImage image = new BitmapImage();
            image.BeginInit();
            image.UriSource = new Uri(@newSource, UriKind.Absolute);
            image.EndInit();
            WebImg.Source = image;
        }
    }

    private void dispatcherTimer_Tick(object sender, EventArgs e)
    {
      ChangeImageSource(txtImgSrc.Text.Trim());
    }

问题是图像不会改变。它显示的是第一次拍摄的照片。定时器运行正常。但图像不会改变。我在这做错了什么?

编辑:网络源在一定时间间隔后刷新,因此必须获取相同的源

1 个答案:

答案 0 :(得分:2)

您显然是从相同的图片网址重新加载,默认情况下会缓存该网址。

通过设置BitmapCreateOptions.IgnoreImageCache

来禁用缓存
var image = new BitmapImage();
image.BeginInit();
image.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
image.UriSource = new Uri(newSource);
image.EndInit();