0

皆さん、私の質問は、スレッド内のリッチテキストボックスにアクセス (更新/読み取り) するにはどうすればよいかということです。私がやっていることを理解できるように、非常に単純なコードを作成しました。インボーク、デリゲート、またはバックグラウンドワーカーについて言及されているインターネット上の記事をいくつか検索しました。誰かが来て、どれをどのように使用するか教えてくれることを願っています。本当にありがとう。

Imports System.Threading

Public Class form1

Dim flag As Boolean = True
Dim startbtn As Thread
Dim stopbtn As Thread

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    startbtn = New Thread(AddressOf startfuction)
    startbtn.Start()
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    stopbtn = New Thread(AddressOf stopfunction)
    stopbtn.Start()
End Sub

'************** thread 1

Private Sub startfuction()
    flag = True
    While flag = True
        richtextbox1.text = "Your process started"         'error
    End While

End Sub

'************** thread 2
Private Sub stopfunction()
    flag = False
    startbtn.Abort()
    MsgBox("You ended the process")
End Sub

クラス終了

4

1 に答える 1

0
Imports System.Threading

Public Class Form1

Dim flag As Boolean = True
Dim startbtn As Thread

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    startbtn = New Thread(AddressOf startfuction)
    startbtn.Start()
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    flag = False
    MsgBox("You ended the process")
End Sub

'************** thread 1

Private Sub startfuction()
    flag = True
    While flag = True
        Me.Invoke(Sub() RichTextBox1.Text = "Your process started")         'error
    End While
    Me.Invoke(Sub() RichTextBox1.Text = "Your process stopped")         'error

End Sub
End Class

編集1

また、スレッドを実行しているときに、アプリを閉じると、スレッドが途中で終了するため、問題が発生する可能性があります..

のようなことをする

Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    flag = False
    Application.DoEvents()
End Sub
于 2016-01-17T20:48:57.447 に答える