Код: Выделить всё
public class NativeBitmap {
public Android.Graphics.Bitmap bitmap;
public int rawHeight = 0;
public int rawWidth = 0;
}
Код: Выделить всё
private async Task getNativeBitmapFromDisk(string localPhotoPathAndName) {
NativeBitmap nativeBitmap = new();
using (FileStream fs = File.Open(localPhotoPathAndName, FileMode.Open, FileAccess.Read, FileShare.Read)) {
nativeBitmap.bitmap = Android.Graphics.BitmapFactory.DecodeStream(fs);
nativeBitmap.rawWidth = nativeBitmap.bitmap.Width;
nativeBitmap.rawHeight = nativeBitmap.bitmap.Height;
}
return nativeBitmap;
}
Код: Выделить всё
//main thread method (works):
photoNativeBitmap[0] = await getNativeBitmapFromDisk(localPhotoPathAndName); //main threaded, works
//background thread method (DOES NOT RELIABLY WORK):
//photoNativeBitmap[0] = await Task.Run(() => getNativeBitmapFromDisk(localPhotoPathAndName));
try {
Debug.WriteLine("GOT ANDROID PHOTO, WIDTH: " + photoNativeBitmap[0].bitmap.Width);
}
catch (Exception e) {
Debug.WriteLine("EXCEPTION ON TASK RUN: " + e.Message);
}
Код: Выделить всё
Cannot access a disposed object. Object name: 'Android.Graphics.Bitmap'
Это ожидаемое поведение? Или, возможно, какая-то ошибка C#/.NET? Я хотел бы использовать загрузку через Task.Run, чтобы попытаться выполнить загрузку растрового изображения из основного потока, но не в том случае, если растровое изображение будет собираться мусором в процессе.
Спасибо за любые мысли и идеи.
Подробнее здесь: https://stackoverflow.com/questions/793 ... enerated-o
Мобильная версия