2012-03-26 10 views
1

同じサーバーで2つの別々のC#ASP.NETプログラムを実行しています。それぞれのリッチテキストボックスコントロールをそれぞれのビジネスレイヤーのDLLで使用して、データベースに格納されたテキストからRTF書式を取り除きます。RTFを取り除くと、リッチテキストボックスでハンドルエラーが発生する

問題は、両方のプログラムを実行すると、この行が(両方のプログラムで)次のエラーで失敗することがよくあります。

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

これらのプログラムは、コードやDLLを共有しません。共通の唯一のことは、書式設定を取り除くために使用される技法と、同じサーバー上にあるという事実です。

このようにリッチテキストボックスを使用して既知の問題はありますか?私はコードを書いていないが、dllでUI要素を使うのは非標準的なようだが、これは書式を取り除く方法を探すときの共通の解決策である。

理想的には、リッチテキストボックスを使用せずに解決策を見つけることができます。私は近づいて正規表現を使用して1つが見つかりましたが、フォーマットの100%が剥奪されることを保証しません。なぜこれが起こっているのか、あるいは何らかの対処方法についての説明があれば、感謝します。

ありがとうございます!

答えて

4

RTFからTextに変換する静的クラスのメソッドで、最近同じエラーが発生しました。

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です。

関連する問題