作者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