2
A
回答
2
使用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;
}
相關問題
- 1. 使WPF圖像加載異步
- 2. 加載圖像異步
- 3. 異步圖像加載
- 4. 異步加載圖像
- 5. 異步加載的圖像
- 6. 異步圖像加載
- 7. DataGridViewImageCell異步圖像加載
- 8. 異步加載圖像
- 9. 從文件異步加載圖像
- 10. iCarousel + Parse:從PFObject加載異步圖像
- 11. 異步加載圖像到桌面
- 12. 將圖像加載到UICollectionView異步?
- 13. Android圖庫異步圖像加載
- 14. 從URL加載圖像爲UITableViewCell(需要異步加載)
- 15. 異步加載圖像在WPF值轉換器
- 16. 異步加載時不出現在WPF窗體上的圖像
- 17. 從文檔目錄異步加載圖像到UICollectionView
- 18. 將圖像從Url異步加載到PictureBox
- 19. 在C#中加載異步圖像#
- 20. 如何異步加載本地圖像?
- 21. ASP.NET MVC - 如何異步加載圖像?
- 22. Objective-C類異步加載圖像
- 23. TableView與異步加載遠程圖像
- 24. 異步圖像加載不起作用?
- 25. 問題異步加載圖像
- 26. ListView異步圖像加載策略
- 27. 與Laravel/jquery異步加載圖像
- 28. 的Android異步圖像加載[]
- 29. 在uitableviewcell異步加載圖像
- 30. 通過NSURLConnection異步加載TableView圖像
尼斯的答案,但我忘了說我不能使用調度員(或我不知道怎麼做),我加載從圖像類。 – cyrianox 2010-11-13 09:49:35
您必須使用調度程序。這是沒有辦法的。如果您從不同的線程加載圖像(異步),只有一種方法可以將圖像傳回UI,並通過調度程序。這個例子顯示瞭如何。 – 2010-11-13 09:53:44