Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Crtanje kontrola u threadu

[es] :: .NET :: Crtanje kontrola u threadu

[ Pregleda: 2299 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Dejan Stojanovic
Pozarevac

Član broj: 162780
Poruke: 18
212.200.27.*



Profil

icon Crtanje kontrola u threadu13.11.2007. u 10:26 - pre 200 meseci
Imam problem prilikom dodavanja kontrola na aktivnoj formi.
Na formi koja je aktivna dodaje se samo jedna custom kontrola koja na sebi doda dinamicki sve kontrole koje treba da prikaze. Promena set-a kontrola koje se prikazuju u toj kontroli se vrsi na promenu itema u listi koja je na formi na kojoj se i dodaje ova kontrola koja sadrzi kontrole. Znaci za svaki item u listi se dobija drugaciji set kontrola u custom kontroli koja se dodaje na formu.

Problem je sto to jako sporo radi ako se u istom threadu na kome je forma (mora da se ceka dok se sve ne iscrta pa da nastavi dalje).
Probao sam da dodavanje kontrole i poziv za dodavanje kontrola u tu custom kontrolu uradim u threadu na taj nacin sto sam pozvao u threadu metodu na kontroli koja se dodaje na formu. Kada se obavi poziv u kontroli onda preko invoke vracam tu kontrolu i dodajem je u kolekciju kontroli na formi.

Problem je sto se kod na ovaj nacin bukvalno zakoci, a i VS ze zamrzne, tako da nemam predstavu u cemu je ovde problem.

Unapred hvala.
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.adsl-3.sezampro.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: Crtanje kontrola u threadu13.11.2007. u 13:44 - pre 200 meseci
Ako sam te razumeo, pokušavaš da iz nekog thread-a koji si kreirao update-uješ ili dodaš nove kontrole nekoj formi?
Ako je tako, onda bi ili morao da postaviš Control.CheckForIllegalCrossThreadCalls na false( što nije dobro jer nije dozvoljeno da se izgled kontrola menja van niti u kojoj je ta kontrola napravljena pa može da dođe do nepredviđenih grešaka ) ili da ovo svojstvo ostaviš na true a menjanje kontrole uradiš pozivajući određenu funkciju, nazovimo je DoUIChange_Form1Text i u njoj napišeš kod poput ovoga:
Code:
public delegate void DoUIChange_del();

        public void DoUIChange_Form1Text()
        {
            if (this.InvokeRequired)
            {
                DoUIChange_del myDel = new DoUIChange_del(DoUIChange_Form1Text);
                this.Invoke(myDel, new object[] { });
            }
            else
            {
                this.Text = "Caption Forme..."; //ovde dodaš svoj neki kod...
            }
        }


I onda će sve da radi lepo...
 
Odgovor na temu

[es] :: .NET :: Crtanje kontrola u threadu

[ Pregleda: 2299 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.