Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno 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

Předmět Autor Datum
How to: Make Thread-Safe Calls to Windows Forms Controls Pro příště: odinstaluj si jazykový balíček…
Wikan 10.04.2013 18:48
Wikan
Oká díky, mrknu na to, no já když zadal tu českou hlášku do google, tak to nic nenašlo.
Bayerus 10.04.2013 18:57
Bayerus
komunikovat medzi threadmi ide pomocou messages alebo specialnych spolocnych datovych struktur ktore…
MM.. 10.04.2013 19:04
MM..
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ě ? Jeno…
Bayerus 10.04.2013 19:50
Bayerus
Ty jsi snad radu nedostal?
Wikan 10.04.2013 19:51
Wikan
To neni navazanie to bola rada do zivota - najprv studovat, potom programovat. Poradit som poradil ;…
MM.. 10.04.2013 19:52
MM..
Inac k tomu co sa snazis robit ten progressbar, ja by som to robil opacne t.j. progressbar by kresli… poslední
MM.. 10.04.2013 20:25
MM..
Pozri sa na BackgroundWorker. Prípadne použi WPF, kde vyriešil Microsoft aj toto. :-)
los 10.04.2013 20:00
los

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 ;))

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)

Zpět do poradny Odpovědět na původní otázku Nahoru