1

我在 ASP.Net 进程的上下文中使用 WPF 调整图像大小,我发现在我的调整大小过程中施加大量负载后,我最终得到异常“操作成功完成”和我的图像转换失败。

4

1 回答 1

2

这是由 WPF 要求在 HWND(窗口句柄)的上下文中运行引起的。如果 WPF 操作在窗口或应用程序的上下文之外运行,它将创建一个新的Dispatcher并在进程中使用一个窗口句柄。这些句柄不一定会在 .net GC 运行的同时被收集,因此这会导致泄漏。

对此的解决方案是引用单个调度程序,例如Dispatcher.CurrentDispatcher,并将其传递给需要运行 WPF 操作的所有方法。然后调度程序可以接受一个动作来运行,所以你可以用类似的东西来调用它_dispatcher.Invoke(() => ClassResizeMethod(image, size))

于 2012-11-12T22:38:08.510 回答