thread.about,该怎么解决
thread.aboutVB.NET codePrivate Sub Work()‘线程Dim i As Integer 0DoThread.Sleep(1000)i + 1If Work_
thread.about
VB.NET codePrivate Sub Work() ‘线程 Dim i As Integer =0 Do Thread.Sleep(1000) i += 1 If Work_status = False Then Exit Sub ’如果不加这句,退出线程是跑出异常 第一個可能發生的例外狀況類型 'System.Threading.ThreadAbortException' 發生於 Microsoft.VisualBasic.dll writestatus("找零点" & i & "秒") '委托 Debug.Print(i) Loop Until i = 10 end sub 按钮事件 Work_status = False If Workline IsNot Nothing Then Try If Workline.ThreadState <> ThreadState[code=VB.NET]
.Stopped Then
Workline.Abort() ‘这里抛出
End If
Catch ex As ThreadAbortException
Debug.Print(ex.ToString)
Thread.Sleep(500)
Workline.Abort()
End Try[code=VB.NET][/code]
[/code]
why???
[解决办法]Workline.Abort()是不安全终止线程,优雅的程序设计是绝对不会使用这个函数的。正确的做法是安全退出线程。
笨点的方法是在Work_status = False后面睡眠大于1000MS的时间,但是这样会导致界面假死1000MS,这样,等待线程执行完成Thread.Sleep(1000)后线程就自己退出了。
当然有更好的方法,通过信号机制控制,C++中可以在线程中使用WaitForSingleObject+SetEvent函数控制时间暂停,VB中应该也有类似的方式,VB我不熟,你自己找找例子看看。
[解决办法]通过接受信号来终止线程把?