我正在使用WPF TextBox
在Web应用程序中执行服务器端拼写检查。我知道将PresentationFramework添加到IIS中托管的Web应用程序是一件顽皮的事情,但无论如何我都做到了。现在我付出了代价。
我正在做这样的事情:
var spellCheckTextBox = new TextBox {
Text = text
};
int errorIndex = spellCheckTextBox.GetNextSpellingErrorCharacterIndex(startPosition, LogicalDirection.Forward);
为此,我必须将STA中的方法称为this article轮廓。
我收到Win32Exception: The operation completed successfully
异常,我认为这是因为我已经超过了进程可以分配的最大句柄数。我正在分配文本框的方法成功完成但我感觉基础Win32图形上下文没有被清理。 TextBox不实现IDisposable。我怎样才能确保它清理它所使用的任何资源?
我在想,如果在页面发生故障时它位于xaml页面上,那么Presentation Framework的内部可能会进行清理,但它不会发生。
如果有人对此感兴趣,那么堆栈跟踪:
[Win32Exception: The operation completed successfully]
MS.Win32.UnsafeNativeMethods.RegisterClassEx(WNDCLASSEX_D wc_d):15
MS.Win32.HwndWrapper..ctor(Int32 classStyle, Int32 style, Int32 exStyle, Int32 x, Int32 y, Int32 width, Int32 height, String name, IntPtr parent, HwndWrapperHook[] hooks):479
System.Windows.Threading.Dispatcher..ctor():136
System.Windows.Threading.Dispatcher.get_CurrentDispatcher():14
System.Windows.DependencyObject..ctor():0
System.Windows.Media.Visual..ctor(ResourceType resourceType):11
System.Windows.UIElement..ctor():0
System.Windows.FrameworkElement..ctor():11
System.Windows.Controls.Control..ctor():0
System.Windows.Controls.Primitives.TextBoxBase..ctor():0
System.Windows.Controls.TextBox..ctor():11
我发现其他一些有类似问题的人here和here我认为它可能与this (although this is old)有关。似乎在大多数情况下,Win32图形内容为leaking or not being cleaned up。