读书人

於多程度的解决方案

发布时间: 2012-01-21 21:31:43 作者: rapoo

於多程度的
以下是我的源代

Imports System.Threading

Public Class Form1
Private Delegate Sub InvokeDelegate()
Dim th1 As Thread
Dim th2 As Thread

Private Sub Delegate1()
BeginInvoke(New InvokeDelegate(AddressOf thread1))
End Sub

Private Sub Delegate2()
Dim myInvoker As MethodInvoker
myInvoker = New MethodInvoker(AddressOf thread2)
BeginInvoke(myInvoker)
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
th1 = New Thread(AddressOf Delegate1)
th2 = New Thread(AddressOf Delegate2)
th1.Start()
th2.Start()
End Sub

Private Sub thread1()
Dim i As Integer
Do While True
ProgressBar1.Value = i
i += 1
If i = 100 Then i = 0
Thread.Sleep(200)
Loop
End Sub

Private Sub thread2()
Dim ii As Integer
Do While True
ProgressBar2.Value = ii
ii += 1
If ii = 100 Then ii = 0
Thread.Sleep(250)
Loop
End Sub

End Class


行不出
可是只有一度走
是怎回事呀?
要如何改呢??


[解决办法]
你的代码有问题,这样做始终在一个 Do While True出不来



*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

最新版本:20070212

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
[解决办法]
Private Delegate Sub InvokeDelegate(ByVal i As Integer)
Dim th1 As Thread
Dim th2 As Thread

Private Sub Delegate1()
Dim i As Integer
Do While True
BeginInvoke(New InvokeDelegate(AddressOf thread1), i)

i += 1
If i = 100 Then i = 0
Thread.Sleep(200)
Loop

End Sub

Private Sub Delegate2()
Dim ii As Integer
Do While True
BeginInvoke(New InvokeDelegate(AddressOf thread2), ii)
ii += 1
If ii = 100 Then ii = 0
Thread.Sleep(250)
Loop

End Sub

Private Sub thread1(ByVal i As Integer)
ProgressBar1.Value = i
End Sub

Private Sub thread2(ByVal i As Integer)
ProgressBar2.Value = i
End Sub

读书人网 >VB Dotnet

热点推荐