System.Windows.Forms.RichTextBox を使用して RTF ファイルを読み取るために、C# で DLL を作成しました。RTF ファイル名を受け取った後、属性のないファイルからテキストだけを返します。
コードは以下のように提供されます。
namespace RTF2TXTConverter
{
public interface IRTF2TXTConverter
{
string Convert(string strRTFTxt);
};
public class RTf2TXT : IRTF2TXTConverter
{
public string Convert(string strRTFTxt)
{
string path = strRTFTxt;
//Create the RichTextBox. (Requires a reference to System.Windows.Forms.)
System.Windows.Forms.RichTextBox rtBox = new System.Windows.Forms.RichTextBox();
// Get the contents of the RTF file. When the contents of the file are
// stored in the string (rtfText), the contents are encoded as UTF-16.
string rtfText = System.IO.File.ReadAllText(path);
// Display the RTF text. This should look like the contents of your file.
//System.Windows.Forms.MessageBox.Show(rtfText);
// Use the RichTextBox to convert the RTF code to plain text.
rtBox.Rtf = rtfText;
string plainText = rtBox.Text;
//System.Windows.Forms.MessageBox.Show(plainText);
// Output the plain text to a file, encoded as UTF-8.
//System.IO.File.WriteAllText(@"output.txt", plainText);
return plainText;
}
}
}
Convert メソッドは、RTF ファイルからプレーンテキストを返します。VC++ アプリケーションでは、RTF ファイルをロードするたびにメモリ使用量が増加します
増加しています。各反復の後、メモリ使用量は 1 MB ずつ増加します。
使用後に DLL をアンロードし、新しい RTF ファイルを再度ロードする必要がありますか? RichTextBox コントロールは常にメモリに保持されますか? または他の理由....
私たちは多くのことを試しましたが、解決策を見つけることができません。