Avatar
marik
Člen
Avatar
marik:

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 -InvalidOperati­onException 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(sen­der 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.Ma­ximum Then
newval = ProgressBar1.Ma­ximum
ElseIf newval < ProgressBar1.Mi­nimum Then
newval = ProgressBar1.Mi­nimum
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

 
Odpovědět 29.1.2015 7:39
Avatar
Odpovídá na marik
Michal Štěpánek:

Mrkni se na komponentu BackGroundWorker, ta umožňuje práci v jiném vlákně "na pozadí" a je to jednodušší, než samotná práce s vlákny.
Tady je video, z kterého jsem to pochopil i já...
http://channel9.msdn.com/…plikacich-CZ

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 30.1.2015 9:26
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
marik
Člen
Avatar
Odpovídá na Michal Štěpánek
marik:

Tak teď už to chápu i já :)
Díky

 
Nahoru Odpovědět 30.1.2015 12:01
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.