Hej Sleep 1000 är väl att ta i. Då säger du till operativet att din applikation skall sova i en hel sekund och då kan den inte göra något inkl inte uppdatera sitt gränssnitt. (eftersom din applikation inte är trådad). Application.Doevents() var ju en fräsig liten grej! :) du kan ju annars ställa in prioriteten på thread:en typ:not responding medans den loopar
Har gjort en liten exe som går igenom en databas och "processar lite data", men har lite problem såklart...
(tilläggas bör att jag defenitivt inte är någon win-forms programmerare utan jobbat nästan uteslutande med web...)
Jag hämtar lite info till ett dataset och processar med en "for...". Medans denna for-loop körs så sticker processorbelastningen upp i 100% och mitt program blir "not responding".
För att dra ner belastningen något och låta andra program på den stackars datorn få jobba lite så lade jag till en CurrentThread.Sleep(1000) mellan stegen i loopen, och den drar inte längre några 100% på processorn, vilket ju är bra, men det blir fortfarande "not responding" på programmet tills den kört klart helt. Det förtar ju lite idén med en progress-bar eller en "jobbar med post 242 av 475" tillexempel.
Me.Refresh mellan stegen funkar ju inte heller... :(
tips?Sv: not responding medans den loopar
Du kan lösa det genom att skapa en ny tråd som gör jobbet i bakgrunden (mer jobb),
eller (mindre jobb) gör en kortare sleep t.ex. 20 msec, och direkt efter: Application.Doevents() i varje iteration.Sv:not responding medans den loopar
Då blev det mycket bättre!
den är inte så prestandakrävande med en kort-kort sleep heller... det är jobbigast för sql-servern... :-PSv: not responding medans den loopar
minTrad.Priority = ThreadPriority.BelowNormal
mer att läsa: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemthreadingthreadclassprioritytopic.asp
Tjosan!