24. juli 2004 - 18:14Der er
8 kommentarer og 2 løsninger
Form fryser
Jeg har et lille prg. som kopierer en masse filer over på en server. Når der kopieres fryser formen helt og dukker først frem igen når kopieringen er afsluttet. Kan man ikke forhindre det ? Jeg ville have en progressbar på formen men den vil jo forsvinde som resten af formen.
Løkken, der kopierer filerne, skal kalde DoEvents ved hvert gennemløb, evt. oftere. DoEvents giver eksekveringstid til andre ventende tråde, hvorved din Form gentegnes, etc.
blueeye97 >> Ved den måde du kopierer på, kopieres alle filerne på én gang, og det er sådan set godt nok. Problemet er at det tager noget tid at kopiere filerne, og imens kopieringen foregår, kan Windows ikke opdatere formen og andet. Løsningen er at kopiere én fil af gangen og kalde DoEvents mellem hver fil. Det kræver godt nok lidt mere kode, men det er din eneste mulighed for at undgå, at formen fryser.
Du har ret, det vil være for omfattende. Det er backup-ting. Og filantallet ændres jo løbende så det ville være tåbeligt at begynde på. Jeg finder mig i den lille pause. :o)
Det bedste (synes jeg) ville være, at loope igennem alle filerne.
Så kan du gøre sådan her: dim AntalFiler as integer ' indeholder antallet af filer i mappen dim AntalFilerKopieret as integer ' indeholder antallet af filer som er kopieret
- hent antallet af filer i mappen (variabel: "AntalFiler") - opdater progressbar (0%) - doevents - start loop --- kopier fil (tilføj 1 til variablen "AntalFilerKopieret") --- opdater progressbar: 100 - (((AntalFiler - AntalFilerKopieret) * 100 ) / AntalFiler - hop tilbage til "start loop"-område (sker automatisk) - når alle filer er kopieret: -- afslut loop -- opdater progressbar (100%)
Det med antal procent.. formlen hedder: 100 procent, minus "forskellen mellem AntalFiler og AntalFilerKopieret gange 100, divideret med AntalFiler".
Eksempel:
AntalFiler i mappen er 8 AntalFilerKopieret er 2 Progressbar-værdien er 100 - (((8 - 2) * 100) / 8)) = 25%
..eller også skal DoEvents være inde i selve loopen:
... - start loop - DoEvents --- kopier fil... ...
Synes godt om
Ny brugerNybegynder
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.