2017-01-29 3 views
0

Es passiert, während Text an richTextbox1 angehängt wird und ich schließe das Programm, indem ich auf das rote x in der oberen rechten Ecke des Formulars klicke.Wie soll ich umgehen Kann beim Beenden des Programms nicht auf eine entsorgte Objektausnahme zugreifen?

Also ich denke, ich muss dies im Formular schließen Veranstaltung behandeln.

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
     { 

     } 

Dies ist, wo ich bin RichTextBox (rtbPaths) ist

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-Ereignis

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(); 
     } 

Die Ausnahmemeldung die RichTextBoxExtensions Klasse Diese

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

Aktualisierung

Meldung = Zugriff auf ein entsorgtes Objekt nicht möglich. Objektname: 'RichTextBox'. ObjektName = RichTextBox Source = System.Windows.Forms Stacktrace: bei System.Windows.Forms.Control.CreateHandle() bei System.Windows.Forms.TextBoxBase.CreateHandle() bei System.Windows.Forms.Control .get_Handle() bei System.Windows.Forms.RichTextBox.get_TextLength() bei DownloaderPro.Form1.RichTextBoxExtensions.AppendText (RichTextBox Box, String Text, Farbe Farbe) in Form1.cs: Linie 249 bei DownloaderPro.Form1.downloader_FileDownloadStarted (Object sender, EventArgs e) in Form1.cs: Linie 186

+0

Ideal funktioniert, sollten Sie nicht damit umgehen müssen - ich meine, ist der Code nicht richtig konstruiert irgendwo. Zweitens haben Sie keinen relevanten Code angezeigt. Der Code, den Sie anzeigen, hat keine Bedeutung für das Textfeld. Drittens: Wenn Sie die App trotzdem schließen, können Sie alle Fehler ignorieren, die Sie mit dem Ereignis "application.threadexception" beheben können, das zur Behandlung unerwarteter Fehler in den App-Eintrag geschaltet werden sollte. –

+0

Es ist meist ein Threading-Fehler, das Herunterladen großer Dateien ist etwas, was Sie mit einem Thread machen würden. Stellen Sie sicher, dass der Download gestoppt oder beendet wird, bevor Sie den Benutzer das Fenster schließen lassen. Wenn Sie die Bibliothek von jemand anderem verwenden, hilft das nicht viel, diesen Code richtig zu machen. Oder für uns, um dir zu helfen. –

Antwort

0

Hallo Sie halten followin g-Code in Finissage, wird verhindert, dass es sich um eine Entsorgung

e.Cancel = true; 

Lassen Sie mich wissen, wenn es nicht

Verwandte Themen