Zdravím,
jsem totální amatér a potřebuji poradit s vytvořením formuláře, který se dá za běhu nějakého cyklu zastavit. Našel jsem si příklad na stránkách Microsoftu (https://support.microsoft.com/kb/315577/en-us), který je psaný pro VB 2005. Když to vložím do VB 2010 Express, tak mi při spuštění hlásí chybu -InvalidOperationException was unhandled: Operace mezi vlákny není platná: Přístup k ovládacímu prvku ProgressBar1 proběhl z jiného vlákna než z vlákna, v rámci kterého byl vytvořen. Neví někdo jak to rozchodit? Díky za případné odpovědi.
Zdroják viz níž:
Imports System.Threading
Public Class Form1
Private trd As Thread
Private Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
MessageBox.Show("This is the main thread")
End Sub
Private Sub ThreadTask()
Dim stp As Integer
Dim newval As Integer
Dim rnd As New Random()
Do
stp = ProgressBar1.Step * rnd.Next(-1, 2)
newval = ProgressBar1.Value + stp
If newval > ProgressBar1.Maximum Then
newval = ProgressBar1.Maximum
ElseIf newval < ProgressBar1.Minimum Then
newval = ProgressBar1.Minimum
End If
ProgressBar1.Value = newval
Thread.Sleep(100)
Loop
End Sub
Private Sub Form1_Load( _
ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
trd = New Thread(AddressOf ThreadTask)
trd.IsBackground = True
trd.Start()
End Sub
End Class