Avatar billede jackass- Nybegynder
30. november 2010 - 10:21 Der er 2 kommentarer og
1 løsning

Worker thread og cross thread calls

Hej,

Mit program skal søge i en database, og derefter opdatere et DataGridView med en DataTable som source. For at GUI'en ikke skal "hænge" imens søgningen sker, virker det mest naturligt med en "workerthread" - jeg har bare nada forstand på threading hehe :-)

Anyway, jeg har dette:

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            SqlDataReader dataReaderSearch = FunctionSqlDataReader(workerConn, workerSql);
            if (dataReaderSearch != null && dataReaderSearch.HasRows)
            {
                DataTable myTable = new DataTable();
                myTable.Load(dataReaderSearch);
                dataGridView1.DataSource = myTable;
                dataGridView1.Update();
            }
            dataReaderSearch.Close();
        }

..som jeg kalder med: backgroundWorker1.RunWorkerAsync();

Det compiler som sådan fint, men programmet kaster en exception ved "dataGridView1.DataSource = myTable;" med beskeden:

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

Nogen ideer til en løsning? :-)
Avatar billede heinzdmx Nybegynder
30. november 2010 - 10:56 #1
Du skal bruge RunWorkerCompleted. Du kan ikke gøre noget med GUI tråden fra en anden tråd fordi at der er risiko for at din tråd vil ændre noget samtidigt med noget andet ændre det.

Når jobbet er færdigt vil din worker kalde RunWorkerCompleted fra GUI tråden og du vil derfor kunne opdate den.

Se her hvordan det kan gøres:

http://stackoverflow.com/questions/2348061/problems-with-background-worker-and-data-table

Det burde kunne guide dig i den rigtige retning
Avatar billede jackass- Nybegynder
30. november 2010 - 12:46 #2
Kanon - det virker perfekt, takker! :-P

Smider du et svar?
Avatar billede heinzdmx Nybegynder
30. november 2010 - 18:34 #3
Svar ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester