我有一个用 C# WPF 编写的程序来自动打印文档。它具有的功能之一是它可以检测图像下载失败,因此具有该空图像的文档不会被打印。
这是检测“发件人徽标”图像下载失败的代码的一部分:
_senderLogoFrame = BitmapFrame.Create(new Uri(_invoice.Sender.Logo));
_senderLogoFrame.DownloadFailed += BitmapFrameDownloadFailed;
SenderLogo.Source = _senderLogoFrame;
当调用事件处理程序BitmapFrameDownloadFailed
时_senderLogoFrame.DownloadFailed
,会发生此异常:
shippingLabelForm.CreateDocument 异常:“System.Windows.Media.Imaging.BitmapFrameDecode”类型的指定值必须将 IsFrozen 设置为 false 才能修改。堆栈跟踪:在 InvoicePrintingClient.Form.ShippingLabelForm.SetDataToElements() 的 InvoicePrintingClient.Form.ShippingLabelForm.d__18 的 System.Windows.Media.Imaging.BitmapSource.add_DownloadFailed(EventHandler`1 value) 的 System.Windows.Freezable.WritePreamble()。 MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 InvoicePrintingClient 的 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) .Main.PrintClientMainWindow.<>c__DisplayClass101_1.<b__4>d.MoveNext()
IsFrozen
设置为false是什么意思?它与BitmapSource.DownloadFailure
事件处理程序有什么关系吗?我该怎么做才能解决这个问题?