IIS和Win32Exception上的大量WPF文本框:操作成功完成

时间:2013-07-29 08:21:08

标签: c# wpf iis textbox hwnd

我正在使用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

我发现其他一些有类似问题的人herehere我认为它可能与this (although this is old)有关。似乎在大多数情况下,Win32图形内容为leaking or not being cleaned up

1 个答案:

答案 0 :(得分:0)

感谢HighCores评论,我现在正在调度程序线程上创建文本框,一切正常。对于那些感兴趣的人,有一个存储库here,它使用WPF文本框以这种方式进行拼写检查。