26. april 2009 - 21:47Der er
9 kommentarer og 2 løsninger
Wait funktion med Application.DoEvents fryser ofte
Hej.
Jeg har fundet denne smarte Wait funktion et sted på nettet, som gør at man kan sætte et Wait ind i programmet uden at det låser ligesom med Thread.Sleep. Den ser sådan ud: void Wait(int timervalue) { // set the timer for the number of ms desired WaitF.Interval = timervalue; // enable the timer and set the timerelapsed flag to false WaitF.Enabled = true; _timerElapsed = false; while (_timerElapsed == false) { Application.DoEvents(); System.Threading.Thread.Sleep(5); } }
Dog fryser programmet utroligt ofte ved at bruge Application.DoEvents(). Har prøvet med og uden Thread.Sleep(), men den fryser lige meget hvad. Findes der en anden løsning end at bruge Application.DoEvents(), eller hvad kan skyldes mit program ofte fryser når den bruger dene Wait funktion?
DoWork eventet i BackgroundWorker klassen kører i en anden tråd, så her har du mulighed for at bruge Thread.Sleep så meget du vil, uden at UI'en fryser, og uden at få alle de problemer du kommer til at få med DoEvents.
Kan ikke selv lige gennemskue hvordan jeg skal kunne lave en wait funktion med backgroundworker. Er backgroundworker ikke en thread man kan køre, så den kan lave 2 jobs på en gang ? Vil gerne have den evt. venter 2minutter og brugeren samtidig kan bruge UI'en imens, og så den fortsætter igen efter 2minutter. Er det overhovedet muligt uden Application.DoEvents?
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.