0

我一直在寻找这个问题的答案,但我还没有真正找到

我需要在代码运行时写入富文本框。基本上,我需要用状态行更新richtextbox

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    For i = 0 To 10000
        richtextbox1.appendtext(i.ToString & vbCrLf)
    Next
End Sub

但是,我需要在运行时使richtextbox可滚动,据我了解,我需要使用Backgroundworker。

我知道这对你们所有人来说都是非常基本的,但如果有人可以帮助我,我会非常感激。

4

1 回答 1

0

您可以使用 Async Await,并在其中使用 Invoke 委托。

Public Class Form1
Dim cancelToken As New CancellationTokenSource

Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Await Task.Run(Sub()
                       For i = 0 To 10000
                           Threading.Thread.Sleep(500)
                           RichTextBox1.Invoke(Sub()
                                                   RichTextBox1.AppendText(i.ToString & vbCrLf)
                                               End Sub)
                           If cancelToken.IsCancellationRequested Then
                               Return
                           End If
                       Next
                   End Sub)
End Sub

Private Sub bnCancel_Click(sender As Object, e As EventArgs) Handles bnCancel.Click
    cancelToken.Cancel()
End Sub
End Class

我在其中添加了 Sleep 以模仿一种耗时的方法。我还包含了一个 CancellationTokenSource 来演示如何停止。

这只能用于 .NET Framework 4.5 及更高版本

于 2019-01-10T20:34:57.093 回答