21. februar 2003 - 08:09Der 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
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
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)
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
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
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
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
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
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...
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.