2017-09-03 78 views
-1

這是我的代碼:VB.Net殺多線程功能

For i As Integer = 0 to 20 
    mythread = New System.Threading.Thread(AddressOf myfunction) 
    mythread.Start() 
Next 

我要殺死所有正在運行的MyFunction()

我嘗試了所有的線程:

For Each hello123 As System.Threading.Thread(AddressOf myfunction) 
    thread.abort(hello123) 
Next 

但想出了帶有錯誤(在AddressOf):

數組邊界不能出現在類型說明符中。

+1

[**您不應該使用'Thread.Abort()'來停止線程**](https://stackoverflow.com/a/1560567/3740093)。您必須在** _'myfunction'內部實現自己的檢查_ **,以便在必要時終止線程。例如:'如果IsThread1Running = False Then Return'。 - 請考慮使用[**任務**](https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/task-cancellation)。 –

+0

至於訪問循環中的每個線程:如果您將自己的線程存儲在某處,例如[**'List(Of T)'**](https:// msdn .microsoft.com/EN-US /庫/ 6sh2ey19(v = vs.110)的.aspx)。 –

+0

我已經添加了**直到hey = 0 **循環到我的函數(嘿是整數),所以當我按下停止按鈕時,函數會自動停止並且工作正常,但是我想知道是否有更好的解決方案。 –

回答

0

要停止函數,我們需要定義一個布爾值。然後,功能需要在之內,而our_boolean = true循環。停止按鈕的代碼必須有our_boolean = false,所以當它按下時,while循環會立即結束。

它看起來是這樣的:

Do While potato = True 
    'code 
Loop 

當按下停止按鈕,循環是立即使用,因爲土豆設置爲false不會停止。那麼當我們想繼續運行代碼時,我們只需要設置馬鈴薯和調用函數。