Toon posts:

[VB] 2 functies tegelijk runnen ? of zoiets ?

Pagina: 1
Acties:

Verwijderd

Topicstarter
uhh ja een beetje vaag maar is het ook mogelijk om 2 functies tegelijk te runne ?

want nu heb ik het zo dat als ik een functie aanroep dat het programma blijft wachten totdat die functie klaar is en dan pas weer verder gaat:
code:
1
2
3
4
5
6
7
8
9
private sub main()
....
download
....
end sub

private sub download()
....
end sub

dus zoals hier boven; daar blijft main stil staan na het aanroepen van download totdat download klaar is :( En daardoor lijkt het net of het programma vast gelopen is.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Volgensmij ondersteunde VB geen threads, maar ik kan het mis hebben hoor...

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

In puur VB kan dat niet. Wat jij wilt is multithreading en aangezien de VB6 runtime niet thread-safe is, zou ik daar niet aan beginnen.

Wat je wel kunt doen is een Win32 API functie gebruiken om een sub als thread te starten, maar ik kan dan niet instaan voor de mogelijk verschrikkelijke gevolgen :P

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Probeer het eens met Call <functienaam>.
Ennuhm, als het lijkt alsof je progje vastgelopen is, moet je misschien eens wat DoEvents er in zetten. Dat zorgt ervoor dat Windows ffies z'n dingetjes kan doen (Venstertjes verversen en zo).

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 15-09 11:04

Basszje

Reisvaap!]

VB schijnt trouwens in .net wel multithreading ondersteuning te hebben.

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Verwijderd

Ja, maar in VB6 moet je het niet proberen. Er zijn wel classes gemaakt die het kunnen, maar dat is extreem crash gevoelig :(. Als je m'n sig volgt ;) en daar zoekt zijn er een aantal zeer interressante, maar helaas dus slechte voorbeelden...

[Edit] Call heeft hier overigens helemaal _NIETS_ mee te maken. Maar dan ook echt niets, dat is gewoon een of andere vage VB taal constructie...

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 19:11

Crazy D

I think we should take a look.

Je zou eens wat kunnen stoeien met ActiveX exe's. Daarmee kun je wel multithreaden, maar ik vond het zo flexibel als een betonnen deur voor wat ik wilde, dus ben ik er niet mee verder gegaan. Maar misschien dat het voor jou doel wel geschikt is.

PS
en het was echt multithreaded. Voor starten van die thread had de exe 1 thread, na het starten 2, en ik kon ook 2 msgboxjes tegelijk tonen wat onmogelijk is als het in 1 thread zit

Exact expert nodig?


Verwijderd

Topicstarter
Jammer dat ik nog een n00b ben in VB, en dus het meeste van alles hier nog even moet opzoeken in docs.
maar toch bedankt voor de info tot nu toe,en ik zal wel even stoeien met Multithreading :-)

Verwijderd

In de documentatie van VB6 zul je denk ik heel weinig vinden over multi-threading aangezien dit niet ondersteund wordt.

Ondersteund VB6 wel Out-Of-Process COM servers? Als VB dit nl. wel kan dan kun je het op die manier proberen.

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 15-09 11:04

Basszje

Reisvaap!]

Op maandag 28 januari 2002 16:53 schreef hvdberg het volgende:
Ondersteund VB6 wel Out-Of-Process COM servers? Als VB dit nl. wel kan dan kun je het op die manier proberen.
Volgens mij wel, maar heb er nog nooit iets mee gedaan, dus ik ben niet zeker wat dat betreft.

Vind het btw erg jammer dat VB6 het niet kan.

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

op naar Delphi of C++ dan maar! :)

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


Verwijderd

Zie ook dit topic: [topic=363378]
Daar is deze hele discussie al gevoerd ;)

[Edit]
Hier heb ik toen al een handig linkje geplaatst

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 23:07

johnwoo

3S-GTE

Er zijn overigens wel workarounds mogelijk voor jouw probleem. Aan de functienaam te zien wil je een bestandje downloaden (8> Maar dat kan ook asynchroon, op een aantal verschillende manieren. Je zou het internet transfer controltje kunnen gebruiken (die ondersteunt naast synchrone ook asynchrone downloads), of als je het interessant vindt gebruik je een Winsock control (of zelfs direct de Winsock API) en implementeer je het protocol zelf. FTP en HTTP zijn beide erg simpel en snel te implementeren in VB. Voor een voorbeeldje van een asynchrone HTTP download met proxy support zou je de WinBar tracker code eens kunnen bestuderen ( www.winbar.nl ), die is open source.

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Verwijderd

Topicstarter
Op maandag 28 januari 2002 17:52 schreef johnwoo het volgende:
Er zijn overigens wel workarounds mogelijk voor jouw probleem. Aan de functienaam te zien wil je een bestandje downloaden (8> Maar dat kan ook asynchroon, op een aantal verschillende manieren. Je zou het internet transfer controltje kunnen gebruiken (die ondersteunt naast synchrone ook asynchrone downloads), of als je het interessant vindt gebruik je een Winsock control (of zelfs direct de Winsock API) en implementeer je het protocol zelf. FTP en HTTP zijn beide erg simpel en snel te implementeren in VB. Voor een voorbeeldje van een asynchrone HTTP download met proxy support zou je de WinBar tracker code eens kunnen bestuderen ( www.winbar.nl ), die is open source.
Kan de source er niet vinden, maar ik heb al een oplossing.
Ik heb gewoon een 2e exe gemaakt, die ik dan dat download gedoe laat uitvoeren, en die roep ik dan aan inplaats van die download function.

Verwijderd

Op maandag 28 januari 2002 18:13 schreef RutgerB het volgende:

[..]

Kan de source er niet vinden, maar ik heb al een oplossing.
Ik heb gewoon een 2e exe gemaakt, die ik dan dat download gedoe laat uitvoeren, en die roep ik dan aan inplaats van die download function.
Start je de exe gewoon of doe je het via een reference/CreateObject. In het laatste geval heb je dus een out-of-process COM-server gebouwd.
Pagina: 1