我该如何处理关闭程序时无法访问已处置的对象异常?

时间:2017-01-29 01:35:53

标签: c# .net winforms

当文本附加到richTextbox1并且我通过单击表单右上角的红色x关闭程序时,会发生这种情况。

所以我想我需要在结束事件中处理这个问题。

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{

}

这是我正在更新richTextBox(rtbPaths)

的地方
RichTextBoxExtensions.AppendText(rtbPaths, "Downloading: ", Color.Red);
RichTextBoxExtensions.AppendText(rtbPaths, downloader.CurrentFile.Path, Color.Green);
rtbPaths.AppendText(Environment.NewLine);

这是RichTextBoxExtensions类

public class RichTextBoxExtensions
{
    public static void AppendText(RichTextBox box, string text, Color color)
    {
        box.SelectionStart = box.TextLength;
        box.SelectionLength = 0;

        box.SelectionColor = color;
        box.AppendText(text);
        box.SelectionColor = box.ForeColor;
    }

    public static void UpdateText(RichTextBox box, string find, string replace, Color? color)
    {
        box.SelectionStart = box.Find(find, RichTextBoxFinds.Reverse);
        box.SelectionLength = find.Length;
        box.SelectionColor = color ?? box.SelectionColor;
        box.SelectedText = replace;
    }
}

TextChanged事件

private void rtbPaths_TextChanged(object sender, EventArgs e)
{
    // set the current caret position to the end
    rtbPaths.SelectionStart = rtbPaths.Text.Length;
    // scroll it automatically
    rtbPaths.ScrollToCaret();
}

异常消息

  

消息=无法访问已处置的对象。   对象名称:'RichTextBox'。          对象名=的RichTextBox          来源= System.Windows.Forms的          堆栈跟踪:               在System.Windows.Forms.Control.CreateHandle()               在System.Windows.Forms.TextBoxBase.CreateHandle()               在System.Windows.Forms.Control.get_Handle()               在System.Windows.Forms.RichTextBox.get_TextLength()               在Form1.cs中的DownloaderPro.Form1.RichTextBoxExtensions.AppendText(RichTextBox框,字符串文本,颜色):第249行               在Form1.cs中的DownloaderPro.Form1.downloader_FileDownloadStarted(Object sender,EventArgs e):第186行

1 个答案:

答案 0 :(得分:0)

您好,您可以将代码保持在关闭事件中,这将阻止处置

e.Cancel = true;

如果它不起作用,请告诉我