2012-03-26 61 views
1

我有两个单独的C#ASP.NET程序运行在同一台服务器上。他们每个人都在其各自的业务层DLL中使用Richtextbox控件从存储在数据库中的文本中去除RTF格式。从文本中删除RTF格式导致句柄错误与Richtextbox

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

我最近在一个将RTF转换为文本的静态类中使用了一个方法,开始得到相同的错误。

即使RichTextBox的上下文在方法中(不是全局的),我也将它追踪到RichTextBox未正确放置(或可能足够快)。

如果你的代码没有被执行很多,这可能不是同一个问题。

它可以通过编码转换30,000次以上的测试护理进行再现。实施使用条款解决了问题。

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