C# 使用WPF释放系统句柄以调整图像大小

C# 使用WPF释放系统句柄以调整图像大小,c#,wpf,image-processing,C#,Wpf,Image Processing,我在ASP.Net进程的上下文中使用WPF调整图像的大小,我发现在我将大量负载放在调整大小的进程上之后,我最终得到了异常“操作成功完成”,图像转换失败。这是由于WPF需要在HWND(窗口句柄)的上下文中运行造成的。如果WPF操作在窗口或应用程序的上下文之外运行,它将创建一个新的调度程序,并在此过程中使用一个窗口句柄。这些句柄不必在.net GC运行的同时收集,因此这会导致泄漏 解决方案是引用单个调度程序,例如dispatcher.CurrentDispatcher,并将其传递给需要运行WPF操作

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

这是由于WPF需要在HWND(窗口句柄)的上下文中运行造成的。如果WPF操作在窗口或应用程序的上下文之外运行,它将创建一个新的
调度程序
,并在此过程中使用一个窗口句柄。这些句柄不必在.net GC运行的同时收集,因此这会导致泄漏


解决方案是引用单个调度程序,例如
dispatcher.CurrentDispatcher
,并将其传递给需要运行WPF操作的所有方法。然后,dispatcher可以接受要运行的操作,因此您可以使用类似于
\u dispatcher的方法调用它。Invoke(()=>ClassResizeMethod(image,size))

“操作已成功完成”在我看来并不例外。哪一类是例外?密码在哪里?你在处理所有可以识别的东西,对吗?