문서를 자동으로 인쇄하기 위해 C# WPF로 작성된 프로그램이 있습니다. 그것이 가지고있는 기능 중 하나는 이미지 다운로드 실패를 감지하여 빈 이미지가있는 문서가 인쇄되지 않도록 할 수 있다는 것입니다. _senderLogoFrame.DownloadFailed
에서 이벤트 핸들러 BitmapFrameDownloadFailed
호출하면예외 : BitmapFrameDecode에서 IsFrozen을 false로 설정하여 수정해야합니다.
_senderLogoFrame = BitmapFrame.Create(new Uri(_invoice.Sender.Logo));
_senderLogoFrame.DownloadFailed += BitmapFrameDownloadFailed;
SenderLogo.Source = _senderLogoFrame;
이 예외가 발생한다 :
이
'은 송신기 로고'이미지 다운로드 실패를 검출하는 코드의 한 부분 shippingLabelForm.CreateDocument 예외 : 수정하려면 'System.Windows.Media.Imaging.BitmapFrameDecode'형식의 지정된 값에 IsFrozen을 false로 설정해야합니다. 스택 추적 : InvoicePrintingClient.Form.ShippingLabelForm.SetDataToElements에서 System.Windows.Media.Imaging.BitmapSource.add_DownloadFailed (EventHandler`1 값) 에서 System.Windows.Freezable.WritePreamble() 에서 () InvoicePrintingClient.Form에서 .ShippingLabelForm.d__18.MoveNext() --- 예외가 throw 된 이전 위치에서 스택 추적 끝 --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (작업 작업) at System.Runtime.CompilerServices.TaskAwaiter .HandleNonSuccessAndDebuggerNotification (작업 작업) (InvoicePrintingClient.Main.PrintClientMainWindow). <> c__DisplayClass101_1. < b__4> d.MoveNext()
IsFrozen
을 false로 설정한다는 것은 무엇을 의미합니까? BitmapSource.DownloadFailure
이벤트 핸들러와 관련이 있습니까? 이 문제를 해결하려면 무엇을해야합니까?
['BitmapFrameDecode' (HTTP : // referencesource Microsoft Windows/PresentationCore/Core/CSharp/System/Windows/Media/Imaging/BitmapFrameDecode.cs)는 [BitmapFrame] (https://msdn.microsoft.com/en-us)에서 상속받은 내부 Microsoft 유형입니다. /library/system.windows.media.imaging.bitmapframe(v=vs.110).aspx). 후자는 여기에 문서로 IsFrozen 속성을 상속합니다 : ['Freezable.IsFrozen'] (https://msdn.microsoft.com/en-us/library/system.windows.freezable.isfrozen (v = vs.110) .aspx). – dbc
@dbc "IsFrozen 속성이 true 일 때 개체를 수정하려고하면 InvalidOperationException이 발생합니다." 코드는 객체 수정과 관련이 없으며 이벤트 처리기를 할당하고 설정하기 만하면됩니다. –