

c#- threading
Zdravím,
ERROR: 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.
private void button1_Click(object sender, EventArgs e)
{
this.panel1.Visible = false;
this.panel2.Visible = true;
new Thread(ProgressBAR).Start();
}
void ProgressBAR()
{
Thread.Sleep(5);
for (int start = 0; start <= 100; start++)
{
this.progressBar1.Value = start;
Thread.Sleep(5);
}
}
Chápu tu chybu, všemu rozumím, ale nedokázal jsem nijak přijít na to, jak tu chybu vyřešit, přece nějak musí jít komunikovat mezi Thready. Díky moc
komunikovat medzi threadmi ide pomocou messages alebo specialnych spolocnych datovych struktur ktore ale musia byt osetrene semaformi pomocou CriticalSection apod. Ze ty si nestudoval IT?
(P.S. alebo to co sa pisale na tom MSDN - invoke spusti cast kodu v inom threade ale ta cast kodu musi byt thread safe a pouzivat len messages a handle, to uz ti predpripravil microsoft aby si nemusel studovat IT :D Potom to tak v IT vypada ;))
Chci se jen zeptat, náplň tohoto fóra je pomáhat nebo pomáhat a přitom se navážet třeba do mě ? Jenom mi to teď není úplně jasné.
Inac k tomu co sa snazis robit ten progressbar, ja by som to robil opacne t.j. progressbar by kreslil hlavny thread a novy thread by makal t.j. rabil tu casovo narocnu vec a hlavnemu threadu by len "hlasil" ze v kolkych je %, to sa robi napr. messagmi (v C++ na urovni WinAPI. V C# na to tiez nieco urcite je)