实验要求:
通过5个线程来异步更新窗体中5个TextBox内容
要求任何一个线程都独立进行,并不阻塞其他线程
更新内容是每个Text值加1.
使用5个按钮来控制每个线程的启动及暂停. 实验目的:
查看不同线程间的互相影响 实验控件:
窗体:Form1
按钮:Button1,Button2,Button3,Button4,Button5
文本框:TextBox1,TextBox2,TextBox3,TextBox4,TextBox5 实验结果:通过任意一个按钮来开启任意一个线程,要求该其他正在运行的线程仍可以更新其对应的TextBox内容,并且任意一个线程开始时不导致其他线程的暂停.
对线程不懂啊 不知道怎么处理 并且我用的线程的暂停代码经常出现画面死掉 暂停了又启动不了了 各位大侠帮帮我 谢谢了
通过5个线程来异步更新窗体中5个TextBox内容
要求任何一个线程都独立进行,并不阻塞其他线程
更新内容是每个Text值加1.
使用5个按钮来控制每个线程的启动及暂停. 实验目的:
查看不同线程间的互相影响 实验控件:
窗体:Form1
按钮:Button1,Button2,Button3,Button4,Button5
文本框:TextBox1,TextBox2,TextBox3,TextBox4,TextBox5 实验结果:通过任意一个按钮来开启任意一个线程,要求该其他正在运行的线程仍可以更新其对应的TextBox内容,并且任意一个线程开始时不导致其他线程的暂停.
对线程不懂啊 不知道怎么处理 并且我用的线程的暂停代码经常出现画面死掉 暂停了又启动不了了 各位大侠帮帮我 谢谢了
Ts.Suspend()
Ts.Resume() 为什么提示已经失效? 应该用什么呢? Dim i = 0
Dim Ts As New Threading.Thread(AddressOf Run)
Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click
Try
Ts.IsBackground = False
If i = 0 Then
Ts.Start()
End If
If i Mod 2 = 1 Then
Ts.Suspend()
End If
If i Mod 2 = 0 AndAlso i <> 0 Then
Ts.Resume()
End If
i += 1
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub Sub Run()
Try
Do
Invoke(New MethodInvoker(AddressOf Update))
Loop
Catch ex As Exception
End Try
End Sub
Overloads Sub Update()
lbl1.Text += 1
End Sub一个我这样写不知道可以不???
好不容易学了个叫C#的高级语言,又来个貌似叫vb的,看的眼花
Dim Ts As New Threading.Thread(AddressOf Run)
Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click
Try
Ts.IsBackground = False
If i = 0 Then
Ts.Start()
End If
If i Mod 2 = 1 Then
Ts.Suspend()
End If
If i Mod 2 = 0 AndAlso i <> 0 Then
Ts.Resume()
End If
i += 1
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub Sub Run()
Try
Do
Invoke(New MethodInvoker(AddressOf Update))
Thread.Sleep(100)
Loop
Catch ex As Exception
End Try
End Sub
Overloads Sub Update()
lbl1.Text += 1
lbl1.Refresh()
End Sub一个我这样子基本可以实现 那5个要怎么办呢?
Dim Ts2 As New Threading.Thread(AddressOf Run2)
Dim Ts3 As New Threading.Thread(AddressOf Run3)
Dim Ts4 As New Threading.Thread(AddressOf Run4)
Dim Ts5 As New Threading.Thread(AddressOf Run5)5个
Dim Ts2 As New Threading.Thread(AddressOf Run2)
Dim Ts3 As New Threading.Thread(AddressOf Run3)
Dim Ts4 As New Threading.Thread(AddressOf Run4)
Dim Ts5 As New Threading.Thread(AddressOf Run5)
定义 5个线程,各自运行独立函数! 或 参数 区别
Dim Ts1 As New Threading.Thread(AddressOf Run1)
Dim Ts2 As New Threading.Thread(AddressOf Run2)
Dim Ts3 As New Threading.Thread(AddressOf Run3)
Dim Ts4 As New Threading.Thread(AddressOf Run4)
Dim Ts5 As New Threading.Thread(AddressOf Run5) Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click, btn2.Click, btn3.Click, btn4.Click, btn5.Click
Try
Select Case (sender.text.ToString())
Case 1
Ts1.IsBackground = False
If y = 0 Then
Ts1.Start()
End If
If y Mod 2 = 1 Then
Ts1.Suspend()
End If
If y Mod 2 = 0 AndAlso y <> 0 Then
Ts1.Resume()
End If
y += 1
strLabel = 1
Case 2
Ts2.IsBackground = False
If u = 0 Then
Ts2.Start()
End If
If u Mod 2 = 1 Then
Ts2.Suspend()
End If
If u Mod 2 = 0 AndAlso u <> 0 Then
Ts2.Resume()
End If
u += 1
strLabel = 2
Case 3
Ts3.IsBackground = False
If i = 0 Then
Ts3.Start()
End If
If i Mod 2 = 1 Then
Ts3.Suspend()
End If
If i Mod 2 = 0 AndAlso i <> 0 Then
Ts3.Resume()
End If
i += 1
strLabel = 3
Case 4
Ts4.IsBackground = False
If o = 0 Then
Ts4.Start()
End If
If o Mod 2 = 1 Then
Ts4.Suspend()
End If
If o Mod 2 = 0 AndAlso o <> 0 Then
Ts4.Resume()
End If
o += 1
strLabel = 4
Case 5
Ts5.IsBackground = False
If p = 0 Then
Ts5.Start()
End If
If p Mod 2 = 1 Then
Ts5.Suspend()
End If
If p Mod 2 = 0 AndAlso p <> 0 Then
Ts5.Resume()
End If
p += 1
strLabel = 5
End Select Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub Sub Run1()
Try
Do
Invoke(New MethodInvoker(AddressOf Update1))
Thread.Sleep(100)
Loop
Catch ex As Exception
End Try
End Sub Sub Run2()
Try
Do
Invoke(New MethodInvoker(AddressOf Update2))
Thread.Sleep(100)
Loop
Catch ex As Exception
End Try
End Sub Sub Run3()
Try
Do
Invoke(New MethodInvoker(AddressOf Update3))
Thread.Sleep(100)
Loop
Catch ex As Exception
End Try
End Sub Sub Run4()
Try
Do
Invoke(New MethodInvoker(AddressOf Update4))
Thread.Sleep(100)
Loop
Catch ex As Exception
End Try
End Sub Sub Run5()
Try
Do
Invoke(New MethodInvoker(AddressOf Update5))
Thread.Sleep(100)
Loop
Catch ex As Exception
End Try
End Sub Overloads Sub Update1()
'Select Case strLabel
' Case 1
lbl1.Text += 1
lbl1.Refresh()
' Case 2
'lbl2.Text += 1
'lbl2.Refresh()
' Case 3
'lbl3.Text += 1
'lbl3.Refresh()
' Case 4
'lbl4.Text += 1
'lbl4.Refresh()
' Case 5
'lbl5.Text += 1
'lbl5.Refresh()
'End Select
End Sub
Overloads Sub Update2()
lbl2.Text += 1
lbl2.Refresh()
End Sub
Overloads Sub Update3()
lbl3.Text += 1
lbl3.Refresh()
End Sub
Overloads Sub Update4()
lbl4.Text += 1
lbl4.Refresh()
End Sub
Overloads Sub Update5()
lbl5.Text += 1
lbl5.Refresh()
End Sub
这样可以实现 但是不是太复杂了??? 能用到什么线程池?进程之类的不?我可以先出来一个的所以说我是想简化他很简单的代码实现?求高手帮忙 对这方面还是不太懂! 谢谢大家了 上面的主意谢谢大家了