Удаление форматирования RTF из текста вызывает ошибку обработки с помощью Richtextbox

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

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

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

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

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

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

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

Спасибо!


person Ted Smith    schedule 26.03.2012    source источник


Ответы (1)


Недавно я начал получать ту же ошибку с методом в статическом классе, который преобразует 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 по преобразованию RTF.

person Isaac    schedule 12.04.2012