Avatar billede jps2mt Nybegynder
03. januar 2007 - 19:28 Der er 8 kommentarer og
1 løsning

Afvikle funktion/sub i baggrunden

Er det muligt med VB at afvikle en funktion i baggrunden??
Altså så programmet ikke "går i stå" under udførelsen??

F.eks. sidder jeg og arbejder på et program med en del databasekald til en server der ikke er placeret på samme fysiske netværk, men som skal tilgåes via internettet...

Når jeg sætter programmet til at lave en række kald hvert 5. minut går programmet i stå under disse kald...
Kan jeg på en eller anden måde sende de funktioner der laver de kald til baggrunden så jeg kan arbejde vidre i mit program imens?
Avatar billede erikjacobsen Ekspert
03. januar 2007 - 19:29 #1
Svaret er vel at bruge en tråd (thread).
Avatar billede jps2mt Nybegynder
03. januar 2007 - 19:35 #2
Har du et link til noget læse stof om det?
Avatar billede erikjacobsen Ekspert
03. januar 2007 - 19:42 #3
Det kommer vel lidt an på hvad slags VB du bruger. Jeg kender kun VB.NET - man der kan google finde en masse gode eksempler...
Avatar billede jps2mt Nybegynder
03. januar 2007 - 19:46 #4
OK, det er VB6 jeg arbejder med lige pt. da jeg ikke har haft mod på at få mig sat ind i .NET endnu (har gang i så meget andet samtidigt så .NET er sat i skammekrogen indtil vidre)
Avatar billede erikjacobsen Ekspert
03. januar 2007 - 19:49 #5
Jeg kender som sagt ikke VB6 - umiddelbart har du vel 2 muligheder: vent og se hvad der sker her, eller prøv Goggle.  Tråde er i hvert fald en god mulighed for at lave 2 ting "samtidig" i et program.
Avatar billede shy Nybegynder
03. januar 2007 - 19:56 #6
VB6 kan ikke køre seperate tråde, så du er nød til at lave en ActiveX.exe projekt med det kode som skal "snakke" med databasen. Dernæst skal du fra din main applikation lave en reference til denne ActiveX.exe hvor du har programmeret nogle metoder du kan gøre brug af f.eks. "QueryDB" og "GetDataDB"
Avatar billede kabbak Professor
04. januar 2007 - 13:32 #7
Hvis der i dine kald indgår en løkke, kan du ved at skrive
DoEvents
inde i løkken, så få den til at lave andet også

eks.
For I = 1 To 100000
DoEvents
' din kode
Next
Avatar billede jps2mt Nybegynder
04. januar 2007 - 19:25 #8
Hmmm...Det letteste (uden at jeg skal til at lave helt vildt meget om) må være med DoEvents...

Det virker sådanset også, omend programmet stadigt bliver lidt sløvt til at reagere samt opdateringen bliver lidt længerevarende, men jeg tror det er til at leve med...
Avatar billede kabbak Professor
04. januar 2007 - 20:53 #9
Jeg ved godt at den går sløvere og opdateringen går langsommere, men den fryser da ikke som før.

Et svar ;-))
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

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