Avatar billede blueice Nybegynder
08. april 2005 - 18:45 Der er 3 kommentarer og
2 løsninger

Program Fryser når det downloader

Hej Jeg har et problem med mit program, programmet henter en fil fra nettet, men mens det downloader fryser programmet det fryser først op igen når downloaden er helt færdig.


Hvad er der galt med koden og hvad kan jeg ændre den til:
Håber du kan hjælpe mig

Formen indeholdere: 1 knap (Command1) og 1 tekstbox (Text1)

----Form1----
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Public Function DownloadFile(URL As String, LocalFilename As String)
   
    Dim lngRetVal As Long
    lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
End Function

Public Function GoUpdate()
   
   
    On Error GoTo Fejlmeddelse
 
    Dim Outfile As String, UrlFile As String, fejl As String
   
    fejl = "Fil sæt"
    Outfile = "C:\test.exe"
    UrlFile = "Http://test.dk/testfil.exe" ' Filen fylder ca. 7-8 MB (dummy url)

    'Download
    text1.Text = "Downloader"
    fejl = "Download af fil"
    DownloadFile UrlFile, Outfile 'Hent fil via funktionen DownloadFile

    'Kør fil
    text1.Text = "Installere"
    fejl = "Update filen findes ikke!"
    Shell (Outfile)
   
    'Færdig
    text1.Text = "Færdig"
Exit Function

Fejlmeddelse:
        MsgBox ("Fejl: " & fejl)
End Function


Private Sub Command1_Click()
    GoUpdate
End Sub
----Form1 slut----

//Blueice
Avatar billede blueice Nybegynder
08. april 2005 - 19:14 #1
Er der ikke nok en der vil hjælpe... Vil gerne give flere points hvis det er det der skal til.
Avatar billede efry Nybegynder
08. april 2005 - 20:27 #2
Det er vist ikke points, der skal til, men problemets karakter.
Programmet overfører kontrollen til DLL'en og fortsætter derfor først din kode, når DLL'en er færdig. Der er derfor ikke noget unaturligt i, at dit program 'fryser' under download.

Muligvis kunne du løse det ved at lave et selvstændigt program (.exe), der downloader og lagrer det i en temporær fil på disken, og så blot kalde det program fra din egentlige applikation. Jeg kan dog ikke umiddelbart se hvordan du får besked om hvornår download er færdig, men der findes nogle metoder til at checke om en applikation kører på maskinen. Disse kunne muligvis anvendes, hvis download-applikationen lukker sig selv når den er færdig.

V.h.
efry
Avatar billede blueice Nybegynder
08. april 2005 - 20:36 #3
efry>
Tak for kommentaren, nu forstår jeg det hele. :D
Har lavet download programmet til et selvstændigt program og brugt http://eksperten.dk/spm/224902 til at finde ud af om det stadig kører.<

Hvis du dropper et svar kan du få 100 points for det, ok?
Avatar billede efry Nybegynder
10. april 2005 - 20:33 #4
Glæder mig det løste dit problem
V.h.
efry
Avatar billede blueice Nybegynder
11. april 2005 - 16:14 #5
Point fordeling
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester