这可能是一个非常愚蠢的问题,但我有以下几行代码将原始图像转换为位图图像:
public async void CreateImageThumbnails(string imagePath, int imgId)
{
await Task.Run(() => controlCollection.Where(x => x.ImageId == imgId).FirstOrDefault().ImageSource = ThumbnailCreator.CreateThumbnail(imagePath));
}
调用此方法
public static BitmapImage CreateThumbnail(string imagePath)
{
var bitmap = new BitmapImage();
using (var stream = new FileStream(imagePath, FileMode.Open, FileAccess.Read))
{
bitmap.BeginInit();
bitmap.DecodePixelWidth = 283;
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.StreamSource = stream;
bitmap.EndInit();
}
bitmap.Freeze();
GC.WaitForPendingFinalizers();
GC.Collect();
return bitmap;
}
当在我的
使用
此外,我还对何时和何时不使用
谢谢。
当您调用
您可以利用这样并行执行的优势,同时还可以通过将
还要记住,如果您想并行执行代码,您必须确保这样做是安全的。这通常被称为“线程安全”。