В настоящее время моя программа считывает изображения и текст в записи из файла XML, отображает их на экране, а затем нажатие кнопок «предыдущий / следующий» перемещает к следующей записи. Тем не менее, кажется, что между каждой фотографией требуется несколько секунд, и я бы хотел, чтобы она была мгновенной, как, например, фотоальбом Windows ... или фотографии Facebook (учтите, что это не веб-приложение).
Я искал, нашел несколько похожих ситуаций на мою, но ни одна, казалось, не подходила под мою ситуацию. Я попытался создать класс, основанный на моем поиске, чтобы справиться с фоновой загрузкой и вызвать его в моей программе, но это чревато ошибкой и, вероятно, даже не будет делать то, что я хочу:
//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 '('
Большое спасибо заранее