一个FORM,FORM中一个按钮,一个TEXTBOX:
button 事件 Private Sub btnOutput_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
        Dim myThreadStart As Threading.ThreadStart = New Threading.ThreadStart(AddressOf _OutPutMessage)
        Dim myThread As Threading.Thread = New Threading.Thread(myThreadStart)
        myThread.Start() End Sub执行后:不断向Textbox输出信息。执行过程中,强行关闭form,会出现以上的错误,有什么办法能避免吗?目前我只能用Try 。。 Catch 。。end try 时间来处理
System.ObjectDisposedException: 无法访问已释放的对象。
对象名:“TextBox”。
   在 System.Windows.Forms.Control.CreateHandle()
   在 System.Windows.Forms.TextBoxBase.CreateHandle()
   在 System.Windows.Forms.TextBoxBase.SetSelectedTextInternal(String text, Boolean clearUndo)
   在 System.Windows.Forms.TextBoxBase.set_SelectedText(String value)
   在 System.Windows.Forms.TextBoxBase.AppendText(String text)
   在 HtmlAnalysis.MainForm.OutPutMessage(String _x, String _y, String _qty, String _soldier) 位置 D:\程序代码\HtmlAnalysis\HtmlAnalysis\MainForm.vb:行号 115
   在 HtmlAnalysis.MainForm.OutPutMessage() 位置 D:\程序代码\HtmlAnalysis\HtmlAnalysis\MainForm.vb:行号 149

解决方案 »

  1.   

    你可以把线程定义成全局的变量,然后在form closing事件中先取消线程
      

  2.   

    因为你另外开了一个线程,当你关掉窗口,新开的线程还没结束,还是在访问你的窗口。所以应该如1楼所说,在Form关闭的时候先Abort掉这个线程。
      

  3.   

    在关闭窗口时结束线程,或者在向Textbox输出信息之前检查窗口是否有效。
      

  4.   

    你把线程设为 background线程,就不会再有问题了。thread.IsBackground = true;