重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
建議你使用BackGroundWorker控件。將代碼寫入控件的事件中,使用它的Start方法就可以開始工作了。是與主程序同時進行的。
創新互聯建站是專業的慶云網站建設公司,慶云接單;提供做網站、網站制作,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行慶云網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!
“卡死”是一個非常主觀的描述,如果你要讓主線程殺掉卡死的線程,那么你必須給“卡死”做出準確的定義。
什么是卡死?30秒沒有響應就是卡死?那么“沒有響應”的定義又是什么?
你給出這些條件以后,殺掉一個線程就不難。Abort方法,Dispose方法,都可以。
并沒有看出什么地方可能導致程序假死,這排版也太亂了.不妨調試一下程序,當出現你說的"假死"后暫停一下程序,看看線程都卡在哪里.
另外,從設計上來看,你這里并不需要多線程操作.
以下是在多線程中顯示進度條代碼
'定義一個委托
Delegate Sub dl_ShowProgress(ByVal iValue As Integer)
Public Sub ShowProgress(ByVal iValue As Integer)
If ProgressBar1.IsDisposed Then
Return
End If
If ProgressBar1.InvokeRequired = True Then
Dim pInvoke As New dl_ShowProgress(AddressOf ShowProgress)
Me.Invoke(pInvoke, New Object() {iValue})
Else
ProgressBar1.Value = iValue
ProgressBar1.Refresh()
End If
End Sub
'在多線程中調用ShowProgress(*)函數