Avatar billede sunep Nybegynder
21. februar 2003 - 08:09 Der er 19 kommentarer og
1 løsning

Køre flere funktioner

Kan man ikke køre nogen funktioner i baggrunden af programmet, fordi jeg har en funktion der kontakter en hjemmeside, det tager lidt tid og imens står programmet stille, og man kan ikke bruge selve programmet imens
Avatar billede jrl0469 Nybegynder
21. februar 2003 - 08:13 #1
Joda... Du kan jo bruge timer funktionen.
Avatar billede jrl0469 Nybegynder
21. februar 2003 - 08:14 #2
Og eller events
Avatar billede somaliomar Praktikant
21. februar 2003 - 08:17 #3
Eller måske kan du lave et nyt skujlt vindue, der udfører din funktion i baggrunden.
Avatar billede sunep Nybegynder
21. februar 2003 - 08:20 #4
events??
Avatar billede jrl0469 Nybegynder
21. februar 2003 - 08:26 #5
Events gør dit program istand til at reagere når andre programmer eller interne funktioner kalder, f.eks.
Private Sub TCPWinsock_DataArrival(ByVal bytesTotal As Long)
Avatar billede sunep Nybegynder
21. februar 2003 - 08:28 #6
OK.. men en timer kan godt køre noget kode som ikke stopper alt andet?
Avatar billede jrl0469 Nybegynder
21. februar 2003 - 08:31 #7
Ja, det kan gøres på flere måder. F.eks. ved at sætte Timer1.Interval = 500.
Her vil den kode du har skrevet i "sub Timer1_Timer()" så blive eksikveret
Avatar billede sunep Nybegynder
21. februar 2003 - 08:38 #8
jamen... jeg tror ikke det er det jeg spørger efter... når timeren er sat til så er det fint, og jeg kan bruge porgrammet. men når timeren aktiveres og skal køre noget kode, så spærrer den for at brugeren kan bruge selve programmet
Avatar billede jrl0469 Nybegynder
21. februar 2003 - 08:43 #9
Timeren kan også bruges sådanne
Dim PauseTime, Start, Finish, TotalTime
If (MsgBox("Press Yes to pause for 5 seconds", 4)) = vbYes Then
  PauseTime = 5  ' Set duration.
  Start = Timer  ' Set start time.
  Do While Timer < Start + PauseTime
      DoEvents  ' Yield to other processes.
  Loop
  Finish = Timer  ' Set end time.
  TotalTime = Finish - Start  ' Calculate total time.
  MsgBox "Paused for " & TotalTime & " seconds"
Else
  End
End If

Dette eksempel er taget direkte fra vb-help!
Avatar billede sunep Nybegynder
21. februar 2003 - 08:47 #10
det vil sige at den kode kan bruges til at pause en process og køre andre events... hmm man kan ikke køre flere events på samme tid eller hvad
Avatar billede jrl0469 Nybegynder
21. februar 2003 - 08:50 #11
brug events. Du kan oprette brugerdef. events eller anvende de enkelte objekters events...
Avatar billede sunep Nybegynder
21. februar 2003 - 08:51 #12
ja men kan man køre 2 events på samme tid
Avatar billede jrl0469 Nybegynder
21. februar 2003 - 09:00 #13
Det foregår jo internt i OS'et. Jeg vil foreslå at du bruger events og ser om ikke det fungere som det skal.
Avatar billede sunep Nybegynder
21. februar 2003 - 19:41 #14
Hmm... jeg skriver her hvad problemet er. jeg henter kilde koden på en hjemme side med følgene funktion

Function ReturnHTML(sURL)
    Dim objXMLHTTP,HTML
    Set objXMLHTTP = CreateObject("Microsoft.XMLHTTP")
    objXMLHTTP.Open "GET", sURL, False
    objXMLHTTP.Send
    HTML = objXMLHTTP.responseBody
    Set objRS = CreateObject("ADODB.Recordset")
    objRS.Fields.Append "txt", 200, 45000, &H00000080
    objRS.Open
    objRS.AddNew
    objRS.Fields("txt").AppendChunk HTML
    ReturnHTML = objRS("txt").Value
    objRS.Close
    Set objRS = Nothing
    Set objXMLHTTP = Nothing
End Function

det er fint og den virker, men mens denne funktion kører ( og det tager jo lidt tid da den skal ud og forespørge på nettet ) så kan jeg ikke trykke på andre knapper og køre andre events. Da den lige skal være færdig med det den har gang i. Nogen der nu kan hjælpe
Avatar billede jrl0469 Nybegynder
24. februar 2003 - 08:20 #15
Hva' med at putte din funktion ned i en klient, så kan du uden tvivl køre videre med resten af dit program...
Avatar billede sunep Nybegynder
24. februar 2003 - 13:49 #16
jeg har fundet ud af at lave threads i mit program.. jeg skal nok lige poste linket når jeg kommer hjem, da jeg ikke kan huske det i hovedet, men der var ihvertfald en som havde lavet en class der brugte nogen API calls til at starte og stoppe threads
Avatar billede chris2k Nybegynder
22. marts 2003 - 05:00 #17
Du kan per definition ikke koere flere funktioner paa samme tid i VB... Det er umugeligt, da VB er single threaded. Dvs, vi har kun en traad, og naar den er i brug, saa fryser alt andet.

Anyway, du har fat i det rigtige, du skal bruge threads, jeg har aldrig proevet det i VB og jeg tror hellerikke jeg ville turde... I C++ hedder det pthreads (POSIX THREADS).

Threads er pisse farligt og arbejde med. Hvis du ikke beskytter dine variabler ordentligt, kan resultatet vaere alt. Taenk paa, at 2 forskellige threads anedrer paa den samme variabel paa samme tid... Eller forskudt paa en forkert maade... Det ville gaa helt galt...
Avatar billede chris2k Nybegynder
22. marts 2003 - 05:00 #18
Ups :-)
Avatar billede sunep Nybegynder
12. april 2003 - 13:32 #19
hmm ikke noget
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