01. februar 2005 - 22:00Der er
5 kommentarer og 1 løsning
Form der venter
Hejsa
Jeg er i gang med et projekt hvor jeg har en Form der skal hente en masse data ind fra en database. Det tar lidt tid, så mens den kører (og inden den faktisk har vist Form'en) ville jeg så lave en anden lille form hvor der er et par labels jeg skal kunne ændre i undervejs, så jeg kan skrive hvor langt den er. Problemet er at der hvor den skal vise den label, bare viser en sort firkant nu, indtil den er færdig med at indlæse dataerne.
Er der nogen der kan hjælpe mig?
her er lidt af koden: public Form1() { WaitForm waitfrm = new WaitForm(strPrgName);
hent en masse ting.... waitfrm.Close(); }
klassen WaitForm:
class WaitForm : Form { string label1Txt = "Tester"; string label2Txt = "Tester";
Det skyldes at din WaitForm kører i samme tråd som den der henter data ind. Derfor processerer den ikke sine Windows messages mens du henter data. Du kan løse det ved at hente data ind i en seperat tråd og fyre en event når den er færdig.
Jeg har ikke lige en compiler foran mig nu, men jeg kan da lige ridse op:
Lav en metode som udfører arbejdet og fyrer en event bagefter: public void DoStuff() { // lav en helt masse data // ... // ... // Fyr en event, som fortæller din Form1 at DoStuff() er færdig. }
I din Form1 kan du så bruge System.Threading.Thread.QueueUserWorkItem til at starte en tråd som kører DoStuff. Når din eventhandler kaldes (som du har sat op før DoStuff køres), er DoStuff færdig. Så kan du fjerne din WaitForm, etc.
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.