現在、私のプログラムは、xmlファイルからレコードの画像とテキストを読み取り、画面に表示し、前/次のボタンのクリックが次のレコードに移動します。しかし、WindowsフォトギャラリーやFacebookの写真(これはウェブアプリではないことに気をつけてください)のように、各写真の間に数秒の読み込み時間が必要と思われます。ギャラリーの次の写真をロードするのに数秒かかることがないように、wpfデスクトップアプリケーションで写真をバックグラウンドで読み込むにはどうすればよいですか?
検索したところ、似たような状況がいくつか見つかりましたが、私の状況に合っていないようです。私は、バックグラウンドロードに対処するために、私の検索に基づいて、クラスを作ってみましたし、私のプログラムでそれを呼び出すが、それは誤りをはらんだと多分、私はそれが何やりたいしません。
//ImageManager.cs
class ImageManager
{
private Dictionary<string, Image> images = new Dictionary<string, Image>();
public Image get(string s)
{ // blocking call, returns the image
return load(s);
}
private Image load(string s)
{ // internal, thread-safe helper
lock (images)
{
if (!images.ContainsKey(s))
{
Image img = images.Add(s, img); //load the image s - ERROR cannot implicitly convert type void to image. Void??
return img;
}
return images[s];
}
}
public void preload(params string[] imgs)
{ // non-blocking preloading call
foreach (string img in imgs)
{
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += (s, e) => { load(img); }; // discard the actual image return
bw.RunWorkerAsync();
}
}
}
//MainWindow.cs
ImageManager im = new ImageManager();
im.preload("Data/Images"); // Errors - im is a field but used like a type/token '('
多くのおかげで事前に
あなたのエラー行:**イメージimg = images.Add(s、img)**は間違っているようです。左の変数imgはどのように右側で使用できますか? – Youngjae