Удаление RTF-форматирования из текста вызывает ошибку дескриптора с Richtextbox - PullRequest
1 голос
/ 26 марта 2012

У меня есть две отдельные программы на C # ASP.NET, работающие на одном сервере.Каждый из них использует элемент управления Richtextbox в своих соответствующих библиотеках бизнес-уровня для удаления форматирования RTF из текста, хранящегося в базе данных, как таковой.

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

Проблема заключается в том, что при выполнении обеих программ это часто происходит в случае сбоя этой строки(в обеих программах) со следующей ошибкой.

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

Эти программы не делятся никаким кодом или dll вообще.Единственная общая черта - это метод, используемый для удаления форматирования, и тот факт, что они находятся на одном сервере.

Есть ли известная проблема с использованием Richtextbox таким образом?Я не писал код, но кажется нестандартным использование элемента пользовательского интерфейса в dll, хотя это общее решение при поиске, как убрать форматирование.

В идеале я бы нашел решение, не используя Richtextbox.Я нашел один, использующий регулярное выражение, который подходит близко, но не гарантирует, что 100% форматирования будет удалено.Будем благодарны за любые объяснения причин, по которым это происходит, или любые обходные пути.

Спасибо!

1 Ответ

5 голосов
/ 13 апреля 2012

Недавно я начал получать ту же ошибку с методом в статическом классе, который конвертирует из RTF в текст.

Я отследил ее до RichTextBox, который не был должным образом удален (или, возможно, достаточно быстро), даже еслиКонтекст RichTextBox был в методе (не глобальном).

Если ваш код выполняется не часто, это может быть не той же проблемой.

Это может быть воспроизведено путем кодированиятестовый уход, который проходит конверсию более 30000 раз.Реализация условия использования решила проблему.

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 .

...