[ roberto555 @ 15.01.2007. 12:48 ] @
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!

[ negyxo @ 15.01.2007. 13:06 ] @
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/
[ roberto555 @ 15.01.2007. 16:12 ] @
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!?
[ negyxo @ 16.01.2007. 11:47 ] @
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.
[ roberto555 @ 16.01.2007. 13:19 ] @
e super-skužio (ja sam griješio sa delagatom), najljepša ti hvala!
[ vbvlada @ 22.05.2009. 17:02 ] @
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...