我有两个独立的 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% 的格式将被删除。任何关于为什么会发生这种情况的解释或任何解决方法将不胜感激。
谢谢!
最佳答案
我最近开始遇到同样的错误,使用静态类中的一个方法将 RTF 格式转换为文本格式。
即使 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's official advice for RTF conversion .
关于c# - 从文本中剥离 RTF 格式会导致 Richtextbox 处理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9872553/