Toon posts:

[vb] aansturen van ocx geeft problemen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig een progje te fabrieken die een continue upstream van plaatjes naar de server kan verzorgen.
Er wordt gebruik gemaakt van Microsoft Internet Transfer Control 6.0 (sp4) = ocx-je

na een aantal herhalingen loopt het geheel vast. Het lijkt erop dat het geheugen volloopt, doordat telkens bij een aanroep een stukje geheugen wordt gereserveerd (stapeling).

Onderstaand de coding waarmee ik aan het testen ben.
Wie kan mij helpen en een hint geven?

-------------------------------------

Dim FileSystemObject As Object

Private Sub Command1_Click()
Dim t

t = 0
While t < 300
RequestFTP
ResponseFTP
t = t + 1
Wend
netFTP.Execute , "QUIT"
End Sub

Private Sub Form_Load()
Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
netFTP.RemoteHost = "12.34.56.78"
netFTP.RemotePort = 21
netFTP.UserName = "test"
netFTP.Password = "test"
End Sub

Private Sub RequestFTP()
Dim lus
If FileSystemObject.FileExists("c:\plaatje.exp") = True Then
FileSystemObject.DeleteFile "c:\plaatje.exp", True
End If
netFTP.Execute , "GET plaatje.exp c:\plaatje.exp"
While netFTP.StillExecuting
DoEvents
Wend
End Sub

Private Sub ResponseFTP()
netFTP.Execute , "PUT :\windows\desktop\vb\capture\plaatje_1.jpg"
While netFTP.StillExecuting
DoEvents
Wend
End Sub

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 21:31
Schrijf het zo om dat je geen DoEvents hoeft te gebruiken. 10 tegen 1 dat dit de oorzaak is van je problemen.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Kix@$$
  • Registratie: December 2001
  • Laatst online: 21-08 15:33
Heeft de netFTP control geen Events? Anders zou ik eens kijken of je een netFTP_Finished hebt ofzow zodat je die loop's weg kunt halen.

[edit1]
Mja, als dat die Microsoft Internet Transfer Control is heb je volgens mij (uit m'n hoofd) een Finished event oid.
Als je die erin verwerkt kun je het veel beter bekijken en debuggen ook ipv met loops.
[/edit]

[edit2]
Als ik jou was zou ik er ook zoizo een time-out systeem inmaken van 30 sec ofzow. Opzich best makkelijk te doen met een global var en een timer. :)
[/edit2]

offtopic:
Zou je de code volgende keer tussen [ code=vb]...[/code] kunnen zetten? Is wat overzichtelijker.

[ Voor 83% gewijzigd door Kix@$$ op 18-07-2003 13:02 ]


Verwijderd

Je voert een WHILE i < 300 uit.

Dit wordt met een idioot tempo gedaan, misschien kun je beter gebruik maken van een timer?

//Edit:

Volgens mij kan dit niet aan doEvents liggen.
Simpel gezegt:
Dat zorgt ervoor dat de rest van de processen ook door kunnen gaan en niet hoeven te wachten tot je VB stukje klaar is met verwerken.

[ Voor 47% gewijzigd door Verwijderd op 18-07-2003 15:13 ]


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 21:31
Verwijderd schreef op 18 July 2003 @ 15:11:
Volgens mij kan dit niet aan doEvents liggen.
Simpel gezegt:
Dat zorgt ervoor dat de rest van de processen ook door kunnen gaan en niet hoeven te wachten tot je VB stukje klaar is met verwerken.
Ik weet wat DoEvents doet dankjewel. En ik weet ook dat het meer doet dan je zou verwachten.

VB is niet multithreaded bedoeld, dus probeer het ook niet multithreaded te maken als je het kunt voorkomen. Gebruik DoEvents dus bij voorkeur niet.

Trouwens,

Wat gebeurt hier als de gebruiker tweemaal op de knop drukt ?
Wat als er geen completed vlag komt?
Het zit gewoon vol met deadlocks.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.