这样的循环怎么才能放到另一个线程里,结果在RichTextBox1中显示
这样的循环如何才能放到另一个线程里,结果在RichTextBox1中显示。
上一个问题问的是列举出指定位数所有的数字和字母组合的问题,在此感谢高手们的解答。
新问题出现了,我想把这个循环的过程放到一个线程里,最后将结果显示到RichTextBox1控件中。在循环的过程中在进度条控件显示进度。
否则循环过程中,窗体处于冻结状态,无法响应操作。循环代码如下:
------解决方案--------------------
避免程序挂起可以使用多线程。
http://download.****.net/detail/caozhy/4832657
如果要实现进度,得使用Linq Rx了。
------解决方案--------------------
不多说废话,直接上代码,需要定义1个backgroundworker控件,一个进度条progressbar1,一个按钮button1,一个Richtextbox。
'单击按钮,开始计算
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
bgWorker.RunWorkerAsync()
End Sub
'启动后台线程,开始计算
Private Sub bgWorker_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles bgWorker.DoWork
e.Result = Test()
End Sub
'报告进度
Private Sub bgWorker_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles bgWorker.ProgressChanged
ProgressBar1.Value = e.ProgressPercentage
End Sub
'显示计算结果
Private Sub bgWorker_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bgWorker.RunWorkerCompleted
RichTextBox1.Text = e.Result
End Sub
'后台的计算程序
Function Test() As String
Dim Letter As String() = {" ", "0", "1", "2", "3", "4", _
上一个问题问的是列举出指定位数所有的数字和字母组合的问题,在此感谢高手们的解答。
新问题出现了,我想把这个循环的过程放到一个线程里,最后将结果显示到RichTextBox1控件中。在循环的过程中在进度条控件显示进度。
否则循环过程中,窗体处于冻结状态,无法响应操作。循环代码如下:
Dim Letter As String() = {" ", "0", "1", "2", "3", "4", _
"5", "6", "7", "7", "9", "a", _
"b", "c", "d", "e", "f", "i", _
"j", "k", "l", "m", "n", "o", _
"p", "q", "r", "s", "t", "u", _
"v", "w", "x", "y", "z"}
Dim aaa As String
Dim query = From x In Letter From y In Letter _
From z In Letter Where x + y + z <> " " + (x + y + z).Trim() Select (x + y + z).Trim
For Each s In query
aaa = aaa & "|" & s.ToString
Next
Me.RichTextBox1.Text = aaa
------解决方案--------------------
避免程序挂起可以使用多线程。
http://download.****.net/detail/caozhy/4832657
如果要实现进度,得使用Linq Rx了。
------解决方案--------------------
不多说废话,直接上代码,需要定义1个backgroundworker控件,一个进度条progressbar1,一个按钮button1,一个Richtextbox。
'单击按钮,开始计算
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
bgWorker.RunWorkerAsync()
End Sub
'启动后台线程,开始计算
Private Sub bgWorker_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles bgWorker.DoWork
e.Result = Test()
End Sub
'报告进度
Private Sub bgWorker_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles bgWorker.ProgressChanged
ProgressBar1.Value = e.ProgressPercentage
End Sub
'显示计算结果
Private Sub bgWorker_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bgWorker.RunWorkerCompleted
RichTextBox1.Text = e.Result
End Sub
'后台的计算程序
Function Test() As String
Dim Letter As String() = {" ", "0", "1", "2", "3", "4", _