現在、別のアプリケーションに接続して請求書を取得するアプリケーション (Windows サービス) があります。請求書には、フッター/ヘッダー フィールド用の RTF フィールドがあります。データを取得すると、RTF は次のコードでプレーン テキストに変換されます。
public static string ConvertFromRTFToPlainText(string rtfString)
{
if (rtfString == null)
return null;
System.Windows.Forms.RichTextBox rtBox = new System.Windows.Forms.RichTextBox();
if (rtfString.StartsWith("{\\rtf1"))
rtBox.Rtf = rtfString;
else
rtBox.Text = rtfString;
return rtBox.Text;
}
これはほとんどの場合うまくいきましたが、場合によっては(特定のクライアントが毎回それを取得します)、次の例外が発生します。
Exception Message:Error creating window handle.
Stack trace:
at System.Windows.Forms.NativeWindow.CreateHandle(CreateParams cp)
at System.Windows.Forms.Control.CreateHandle()
at System.Windows.Forms.TextBoxBase.CreateHandle()
at System.Windows.Forms.RichTextBox.set_Rtf(String value)
at SmartTrade.Common.API.Tools.RTFHelperUtility.ConvertFromRTFToPlainText(String rtfString)
at SmartTrade.Desktop.Proxy.API.ObjectMapper.InvoiceObjectMapper.CovertToAPIInvoice(Invoice domainInvoice)
なぜこれが起こっているのか、またはそれを回避する方法について助けていただければ幸いです。
編集:説明してくれたジェレミーに感謝します。RTF変換の代替案を提案した後です。