私は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());
}
問題は画像が変わりません。それは最初に取った同じものを示しています。タイマーは正常に動作しています。しかし、イメージは変わらないでしょう。私はここで間違って何をしていますか?
編集:ネットワークソースが取得する一定の間隔の後に更新されるため、あなたは明らかにデフォルトでキャッシュされている同じ画像URLからリロードされ
も参照[?C#で変数名に@文字の使用/意味は何](https://stackoverflow.com/questions/91817/whats- c)変数名における文字の意味を使用する。 – Clemens