Mit program svarer ikke før foreach-løkke er færdig?

Tags:    c# loop threads

Hej,

hvordan kan det være, at hvis jeg skriver nedenstående, så svarer mit program ikke og farver ikke "DataColumnsne" før loopet er færdigt?
De skulle blive farvet en "row" af gangen. :)

Fold kodeboks ind/udCSharp kode 


På forhånd, tak :)



7 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 11 karma
Sorter efter stemmer Sorter efter dato
Det er fordi at et program som udgangspunkt kun kører i en tråd. Tråde er en måde at håndtere sine arbejdsopgaver, så dit interface ikke fryser - eller rettere så dit program kan multitaske.

Det er lidt grynet at komme i gang med de første par gange... for andre tråde må ikke direkte manipulere ting der ikke tilhører ligepræcis den tråd, og da slet ikke ting i GUI.

Skriver lige et eksempel, kan ikke rigtig benytte dit uden at se resten... men altså:

Fold kodeboks ind/udCSharp kode 


Det skal lige siges, at jeg på tråds af baggrundstråde har oplevet ekstreme responstider pga. hyppig opdatering af gui, hvor jeg farvede rækkerne - det foregik dog lidt anderledes - og optil 10-20 gange i sekundet, hvis ikke mere..

NB: Har ikke testet eksemplet



Personligt har jeg aldrig rigtig fattet BackgroundWorker... men har haft okay succes med den her metode - dog kan jeg stadig godt dræbe mit GUI i ny og næ, når jeg skal farve rækker..



Haha :P

Well, det er fint at have din klasse, hvor du starter metoden i en tråd, men så vidt jeg har forstået dør din tråd automatisk når den er færdig med sit arbejde - ellers skal den jo sættes til Sleep();




Hey tusind tak for dit svar :)
Har allerede kigget lidt på threading, men dit eksempel ser meget mere simplet ud :P
Endda simplere end backgroundworker, der ellers er implementeret control i VS ^^

Checker om det virker i aften :)



Indlæg senest redigeret d. 23.04.2011 13:56 af Bruger #14181
Det virker, tak :D

Hvad er bedst -
At genbruge samme thread så meget som muligt evt. i en klasse jeg holder åben, strø dem ud, eller en fin mellemting? :)

På din vej til Føtex snubler du over et par småsten og lander med hovedet drejet mod rødderne af en busk, du finder +2 Karma & +3 Exp.
Tillykke! :)



Indlæg senest redigeret d. 23.04.2011 17:27 af Bruger #14181
ok, tak :D
+1 karma

Hvordan laver jeg så flere tråde i samme klasse, hvis jeg kun kan lave én?:
private delegate void ThreadCallBack();



Indlæg senest redigeret d. 23.04.2011 21:35 af Bruger #14181
Du kan sagtens lave flere..



t