作者gais (....)
看板Visual_Basic
標題[.NET] 關於執行緒以及傳值的問題
時間Tue Apr 3 15:00:38 2012
請輸入專案類型(網站專案或者應用程式專案):應用程式專案
我想問各位一個問題來釐清我的觀念
假設我在我的form按一個按鈕他就會執行迴圈
ex:
1. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
2. System.EventArgs) Handles Button3.Click
3. Dim Item As String
4. For Each Item In ListBox1.SelectedItems
5. Dim Filenum As Integer
6. ThreadPool.QueueUserWorkItem( _
7. New WaitCallback(AddressOf RunLoop))
parameter = Item.toString() ===>新增的code
8. Debug.WriteLine("end")
9. Next
10. End Sub
Sub Runloop()
Debug.WriteLine("start")
End Sub
迴圈裏面還有寫了一個 Runloop的Sub請thread去執行
我的觀念是當程式執行到第6行會跳去處理Runloop
接著再回來執行第8行以後的code
輸出的結果我認為是
start
end
start
end
但我發現他會先把迴圈執行完 才會去執行Runloop@@
執行結果如下
end
end
start
start
請問各位
我的觀念是錯在哪裡
謝謝大家
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.96.6.195
1F:→ MOONRAKER:阿你要他同時執行為何不直接呼叫RunLoop就好 04/03 15:30
2F:→ MOONRAKER:你thread都用了當然是呈現threaded exec的結果 04/03 15:31
3F:→ gais:如果說我想要我的thread 根據放不同的參數執行thread呢? 04/03 15:42
※ 編輯: gais 來自: 140.96.6.195 (04/03 15:43)
4F:→ gais:我新增了一行code parameter = Item.toString() 04/03 15:43
5F:→ MOONRAKER:看不懂你加這一行有任何用處 04/03 23:17
6F:→ gais:我的目的是 想讓兩個執行緒能夠同時執行 但是餵的參數不一樣 04/03 23:25
7F:推 mraaa:顯然你誤會執行緒了,基本上你叫用執行緒後,他就會自己去做 05/15 13:53
8F:→ mraaa:事了,所以誰先完成誰後完成是由CPU決定的了! 05/15 13:54