1
研究我發現Background Worker
是一個background thread
,但是當我運行下面的代碼Background Worker
仍然運行,直到結束,即使當主程序退出。這個功能保留到foreground threads
嗎?如果Background Worker是一個後臺線程,我該如何執行此代碼?
代碼:
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'Run background worker
BackgroundWorker1.RunWorkerAsync()
'Display exit message
MsgBox("Main procedure exited")
End Sub
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
'Wait 10 seconds
Threading.Thread.Sleep(10000)
'Modify some numbers
Dim variable = 3
variable -= 1
'Display exit message
MsgBox("Background thread " & variable & " exited")
End Sub
End Class
從在控制檯應用程序中使用示例觀看線程上的視頻而引發的混淆。我想現在的問題是爲什麼在VB.Net窗體應用程序中存在前臺和後臺線程,如果最終只要打開,應用程序將以任一方式執行線程。我唯一能想到的是如果做某種功能需要完成是否用戶關閉應用程序,如更新。 –
@Uriel控制檯應用程序與Windows應用程序的工作方式非常不同。在Windows應用程序(WinForms或WPF,無所謂)中,「前臺」線程是顯示和管理用戶界面並運行消息循環的那個線程。實際上,它是可以與UI進行交互的* only *線程。你必須通過後臺線程(例如'Control.Invoke'方法)來做到這一點。後臺線程*在應用程序關閉時不會運行(即前臺線程退出)。 –