从文本中剥离RTF格式会导致Richtextbox出现句柄错误

1 c# text rtf window-handles richtextbox

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

var rtf = new RichTextBox {Rtf = itemWeb.RTF_DESCRIPTION};
                    item.WebDescription = rtf.Text;
Run Code Online (Sandbox Code Playgroud)

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

[Win32Exception (0x80004005): Error creating window handle.]
Run Code Online (Sandbox Code Playgroud)

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

这样使用Richtextbox是否存在已知问题?我没有编写代码,但是在dll中使用UI元素似乎是非标准的,即使这是搜索如何剥离格式时的常见解决方案。

理想情况下,我无需使用Richtextbox就能找到解决方案。我发现一个使用的正则表达式很接近,但是不能保证会删除100%的格式。关于为什么发生这种情况的任何解释或任何变通办法,将不胜感激。

谢谢!

小智 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.
}
Run Code Online (Sandbox Code Playgroud)

这有效,但速度很慢。无需创建控件就可以执行此操作会很好,但这是Microsoft对RTF转换的官方建议