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

Višenitnost-pristup kontroli iz nove niti C#

[es] :: .NET :: .NET Desktop razvoj :: Višenitnost-pristup kontroli iz nove niti C#

[ Pregleda: 2635 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

roberto555
Croatia

Član broj: 64744
Poruke: 451
*.adsl.net.t-com.hr.



Profil

icon Višenitnost-pristup kontroli iz nove niti C#15.01.2007. u 12:48 - pre 210 meseci
pozdrav, imam jedan problem, eto koda:

Code:


private Thread th = null;

/*ovo bi htio da se izvrši u drugoj niti jer kad je u glavnoj na nekoliko sekundi dok se to ne izvrši se
"zamrzne" program*/

   public void kreni()
        {
            this.dataGridView1.DataSource = System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources();           
        }

//i recimo da se to izvrši kad se klikne na button1
   private void button1_Click(object sender, EventArgs e)
        {
            this.th = new Thread(new ThreadStart(this.kreni));
            this.th.Start();           
        }


i onda mi javi grešku
Code:

Cross-thread operation not valid: Control 'dataGridView1' accessed from a thread other than the thread it was created on.


kad recimo stavim MessageBox.Show("poruka") onda je OK, e kad je bilo koja kontrola ovakva greška, ne znam kako da pristupim toj kontroli iz ove niti, tako nešto je vjerojatno posrijedi,,nisam baš previše radio sa takvim stvarima pa molim za neki help...

hvala!


----Roberto----
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Višenitnost-pristup kontroli iz nove niti C#15.01.2007. u 13:06 - pre 210 meseci
Razlog je to sto kontrole moras obavestiti o drugom threadu. Po defaultu, tj. uvek, kontrole se sve nalaze na jednom threadu i samo tu mogu da se referenciraju. Pogledaj BeginInvoke metodu za kontrole, a da bi shvatio kako radi najbolje procitaj ovaj article http://msdn.microsoft.com/msdnmag/issues/03/02/Multithreading/
 
Odgovor na temu

roberto555
Croatia

Član broj: 64744
Poruke: 451
*.adsl.net.t-com.hr.



Profil

icon Re: Višenitnost-pristup kontroli iz nove niti C#15.01.2007. u 16:12 - pre 210 meseci
proučio sam i proradilo mi je (sa textBox-om, ja sam upisao nešto u text box nisam to dobio iz druge niti), koristeči BeginInvoke textbox kontrole,-to sam napravio u nekoliko minuta a iducih 2 i pol sata nisam uspio napraviti da mi u UI thread vrati datatable, i sad da budem iskren sam se izgubio u tome, tj. ne znam ni što sam probao ni što nisam, al uglavnom ne radi kako treba, ne javlja grešku i napravi se radnja koju želim "System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources()" al nisam uspio prikazati u gridu to tj. vratit u glavni thread... znači mene zapravo tu muči komunikacija između niti!?
----Roberto----
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Višenitnost-pristup kontroli iz nove niti C#16.01.2007. u 11:47 - pre 210 meseci
Ne znam ni ja sta ne valja ovako bez koda. Ali iskreno i nemam vremena da analiziram tudji kod pa sam zato namestio mali primer pa probaj.
Prikačeni fajlovi
 
Odgovor na temu

roberto555
Croatia

Član broj: 64744
Poruke: 451
*.adsl.net.t-com.hr.



Profil

icon Re: Višenitnost-pristup kontroli iz nove niti C#16.01.2007. u 13:19 - pre 210 meseci
e super-skužio (ja sam griješio sa delagatom), najljepša ti hvala!
----Roberto----
 
Odgovor na temu

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 209
*.viser.edu.rs.



Profil

icon Re: Višenitnost-pristup kontroli iz nove niti C#22.05.2009. u 17:02 - pre 181 meseci
Da li se ovim Invoke metodama dobija sledeci efekat:
Recimo punim ListBox sa 100.000 Item-a i hocu da, dok to traje, klikcem po formi i radim neki drugi posao.
Do sada sam uspeo da punim lisBox bez toga da mi je korisnicki interfejs dostupan.

Ako ne radim sa Invoke, tada dobijam Exception u DEbug modu, dok bez debug-a mi se to ne buni...
A vi,kako 'te?
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Višenitnost-pristup kontroli iz nove niti C#

[ Pregleda: 2635 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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