23. maj 2002 - 13:14Der er
11 kommentarer og 1 løsning
FileSystemObject fryser programmets, mens den afvikler
Dim fso As New FileSystemObject
fso.CopyFolder "c:\test", "c:\test2", True ------------------------------------------------- Disse 2 linjer kopierer et dir til et andet. Probkemet er bare at mens kopieringen finder sted, er programmet (brugerflade mm.) helt frosset, og ligner et program, der er gået ned. Hvordan beder jeg programmet lave f.eks. en "DoEvents" mens CopyFolder metoden bliver udført ?
Mundi: nej, jeg ved ikke hvordan jeg laver en multitreaded app. Kan du give mig et eksempel på hvordan jeg åbner et FileSystemObject i en ny tråd og afvikler kopieringen der ?
Det er ikke på en simpel måde muligt at lave tråde i VB 6.0, dette er først en feature der er kommet med i .net.
Derfor lær at leve med at programmet fryser, eller lav en ActiveX Control i Visual C++ og brug denne i VB programmet.
Du kan selvfølgelig også prøve at lave din ActiveX control eller komponent i VB og se om det skulle hjælpe, der er noget med at ActiveX komponenter i VB er Apartment threaded, hvilket vil sige de ikke fryser hele programmet.
-mundi- >> Det PDF dokument har íngenting med threading at gøre...det er integration mellem SAS økonomi programmet og VB/VBA/VBScript det er vist de færreste her der har brug for det ;-)
Det viser sig at den nemmeste og mest fornuftige måde at gøre det på, er ved hjælp af SHFileOperation API funktionen. På den måde får man ovenikøbet Windows' indbyggede progressbar, når man kopierer noget.
Jeg brugte en 5 min på at browse igennem det, og kunne godt se at det ikke havde noget med mit problem at gøre.
Men programmet blev løst, og vi blev forhåbentlig alle lidt klogere mht. fil håndtering under VB. Og det er jo det vigtigste :)
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.