비트 맵 변환기를 사용하는 응용 프로그램이 있습니다. 변환기는 앱이 실행되는 동안 수백/수천 개의 이미지를 처리합니다.IValueConverter에서 비트 맵 이미지 고정하기
약간의 왜곡 : 컨버터가 예외를 던지는 경우 (예 : 빨간색 'x'등) 제자리에 표시되는 일반 오류 이미지를 반환해야합니다 이미지 자체의 이것은 사용자에게 무엇인가 잘못되었다는 것을 알려줍니다. 이미지는 포함 된 리소스로 어셈블리에 압축됩니다.
내 전략이 고정 된 개체를 동결 할 수없는 예외가 발생,
private static readonly BitmapImage ErrorBitmapImage;
static ImageConverter()
{
var assembly = Assembly.GetCallingAssembly();
var name = assembly.GetManifestResourceNames().FirstOrDefault(q => q.Contains("MC900432546.PNG"));
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.DecodePixelWidth = 30;
using (var stream = assembly.GetManifestResourceStream(name))
{
bi.StreamSource = stream;
}
bi.EndInit();
bi.Freeze();
ErrorBitmapImage = bi;
ErrorBitmapImage.Freeze();
}
생성자 두 번 개체를 정지하는 것이 관찰 ... 이런 식으로 계산기에 정적 생성자를 확인하는 것입니다. 그렇지 않으면 코드가 예상대로 작동합니다. 두 개의 정지 화면은 질문을 명확하게하기 위해 여기에 코드화되어 있습니다. 하나는 제거해야한다는 것을 알고 있습니다.
Freeze 호출 중 하나 (또는 둘 모두 가능)를 삭제해야합니다. 두 옵션을 모두 시도했지만 차이점을 감지 할 수 없습니다. 볼륨 테스트를 시작하기 전에 대답을 얻고 싶습니다. 어떤 Freeze를 삭제해야합니까? 아니면 둘다?
동일한 객체 인스턴스에서 Freeze를 두 번 호출하면 문제가되지 않으므로 ... –
어쨌든 동일한 객체 인 bi에서 이미 호출 했으므로 ErrorBitmapImage에서 Freeze를 호출하는 이유는 무엇입니까? –
@ThomasLevesque, 질문이 편집되었습니다. –