我不想知道在 WPF 应用程序中从 Mysql 异步加载图像的最佳方法。
谢谢。
最佳答案
使用ThreadPool
从数据库加载图片。
关于
ThreadPool
, 排队从数据库加载图片;加载图像时,仍在线程池中,使用
BitmapFrame.Create()
将图像转换为ImageSource
;使用
Dispather.Invoke
, 将Image
属性设置为加载的图像。
所以,像这样:
private void button1_Click(object sender, RoutedEventArgs e)
{
ThreadPool.QueueUserWorkItem(LoadImage, new LoadImageRequest { ImageName = "Image.png", Control = image1 });
}
private void LoadImage(object state)
{
var request = (LoadImageRequest)state;
byte[] data = ...; // load bytes from the database using request.ImageName
using (var stream = new MemoryStream(data))
{
var imageSource = BitmapFrame.Create(stream);
Dispatcher.BeginInvoke(
new Action<ImageSource>(p => request.Control.Source = p), imageSource
);
}
}
private class LoadImageRequest
{
public string ImageName;
public Image Control;
}
关于.net - 从 Mysql 异步加载图像到 WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4171452/