我有两个独立的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%的格式将被剥离。任何关于为什么会发生这种情况或任何变通方法的解释都将受到赞赏。
谢谢!
答案 0 :(得分:4)
我最近开始使用静态类中的方法获得相同的错误,该方法从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's official advice for RTF conversion。