我在少数方法中使用RichTextBox
个实例,这些方法正在改变字体,颜色,将图像转换为Rtf格式。
public static string ColorText(string text)
{
System.Windows.Forms.RichTextBox rtb = new System.Windows.Forms.RichTextBox();
rtb.Text = conversation;
// find predefined keywords in text, select them and color them
return rtb.Rtf;
}
过了一会儿,我得到OutOfMemory
例外。我应该致电rtb.Dispose();
吗?或者GC.Collect
或使用using
或者说正确的方式?
答案 0 :(得分:4)
从调试器中可以看出,获取Rtf属性值后,rtb.IsHandleCreated属性将为 true 。这是一个问题,窗口句柄保持其包装控件存活。你必须再次处理控件以销毁句柄:
public static string ColorText(string text) {
using (var rtb = new System.Windows.Forms.RichTextBox()) {
rtb.Text = text;
return rtb.Rtf;
}
}
或者将“rtb”存储在静态变量中,这样您只能使用一个实例。