1

我有两个单独的 C# ASP.NET 程序在同一台服务器上运行。他们每个人都在各自的业务层 dll 中使用 Richtextbox 控件来从存储在数据库中的文本中剥离 RTF 格式。

var rtf = new RichTextBox {Rtf = itemWeb.RTF_DESCRIPTION};
                    item.WebDescription = rtf.Text;

问题是,当两个程序都执行时,通常会发生此行失败(在两个程序上)并出现以下错误的情况。

[Win32Exception (0x80004005): Error creating window handle.]

这些程序不共享任何代码或 dll。唯一的共同点是用于剥离格式的技术以及它们位于同一服务器上的事实。

以这种方式使用 Richtextbox 是否存在已知问题?我没有编写代码,但在 dll 中使用 UI 元素似乎是不标准的,尽管这是搜索如何去除格式时的常见解决方案。

理想情况下,我会在不使用 Richtextbox 的情况下找到解决方案。我发现一个使用接近的正则表达式,但不保证 100% 的格式将被剥离。任何关于为什么会发生这种情况的解释或任何解决方法都将不胜感激。

谢谢!

4

1 回答 1

5

我最近使用从 RTF 转换为 Text 的静态类中的方法开始遇到相同的错误。

即使 RichTextBox 的上下文在方法中(不是全局的),我也将其追踪到 RichTextBox 没有被正确处理(或者可能不够快)。

如果您的代码没有被大量执行,这可能不是同一个问题。

它可以通过编写一个经过 30,000 多次转换的测试护理来重现。实现 using 子句解决了这个问题。

using (System.Windows.Forms.RichTextBox rtBox = new System.Windows.Forms.RichTextBox())
{
    rtBox.Rtf = str;
    str = rtBox.Text; // convert the RTF to plain text.
}

这有效,但速度很慢。无需创建控件就可以做到这一点会很好,但这是Microsoft 对 RTF 转换的官方建议

于 2012-04-12T23:44:50.907 回答