Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[VB6/Inet control] Applicatie freezed bij .cancel

Pagina: 1
Acties:
  • 276 views sinds 30-01-2008
  • Reageer

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
Ik was bezig met een ftp-programmatje in visual basic, nu wilde ik een cancel functie maken, dankzij het handig Inet control (Microsoft Internet Transfer Control 6.0 SP4)

hoef ik daar maar 1 functie voor aan te roepen.
Visual Basic:
1
Inet.cancel


dan krijg ik netjes in mijn ftp-serverlog
code:
1
2
3
4
5
6
7
8
9
10
11
...
(000096) 26-7-2007 11:07:02 - database (192.168.1.3) > RETR test.vob
(000096) 26-7-2007 11:07:02 - database (192.168.1.3) > asked to download 'D:\SalidaDatabase\test.vob' --> Access allowed.
(000096) 26-7-2007 11:07:02 - database (192.168.1.3) > 150 Opening data connection for test.vob (331915264 bytes).
(000096) 26-7-2007 11:07:02 - database (192.168.1.3) > started downloading 'D:\SalidaDatabase\test.vob'.
(000096) 26-7-2007 11:07:02 - database (192.168.1.3) > aborted downloading 'D:\SalidaDatabase\test.vob' -  (00:00:01 - 1288,000 KB - 1288,000 KBytes/s)
(000096) 26-7-2007 11:07:02 - database (192.168.1.3) > 426 Cannot retrieve. Failed. Connection reset (10054).
(000096) 26-7-2007 11:08:18 - database (192.168.1.3) > disconnected. (00:01:15)
(000087) 26-7-2007 11:09:50 - database (192.168.1.3) > disconnected. (00:10:00)
(000086) 26-7-2007 11:09:54 - database (192.168.1.3) > 421 Connection timed-out !
(000086) 26-7-2007 11:09:54 - database (192.168.1.3) > disconnected. (00:10:04)


Dit ziet er goed uit, de connectie wordt "aborted"

Alleen in mijn programma bleeft het programma om een apparte manier hangen. Het programma blijft verder werken, maar er kunnen geen nieuwe connecties gemaakt worden via dat Inetcontrol, als ik het programma sluit blijft het process van dat programma op de achtergrond lopen, als ik het programma opnieuw start wil het geen internetverbinding maken totdat ik het oude process gekilled heb.

In debug mode met netjes overal door heen stappen lijkt alles goed te gaan, geen rare dingen totdat ik het programma probeer te sluiten, waar de code blijft staan op de laaste regel die toevallig uitgevoerd werd, deze nog uitvoert en dan niet het programma sluiten. (loopt wel netjes form_unload door)

Ik zit nu dus echt met een raadsel, voor de rest is er zover ik weet geen enkele manier om de Inet te laten stoppen. Ook google hielp me niet, ik vond 1 forum post uit 2003 met dezelfde symptonen icm een inet control, maar geen antwoorden, clue's of oplossingen/

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub Command1_Click()
Dim sSource As String
Dim sDest As String
Dim sExecute As String
sSource = "test.vob"
sDest = "C:\test.sds"
sExecute = "Get " & Chr(34) & sSource & Chr(34) & " " & Chr(34) & sDest & Chr(34)
With Inet
    .URL = "ftp://192.168.1.3" 'eigen pc, maar probleem gebeurt ook via een extern ftp
    .UserName = "aap"
    .Password = "noot"
    .Execute , sExecute
End With
End Sub

Private Sub Timer1_Timer()
'//timer wacht 150ms en zorgt dan voor de cancel, als ik dit eerder doe (direct in code)
'//is de inet nog niet begonnen met ophalen van de bestanden en blijft het programma niet hangen
'/.Cancel kan dus wel zonder problemen voor dat de daadwerkelijke file-transactie begonnen is
Inet.Cancel
End Sub


Simpele code waar niks mis mee is zover ik zie... :'(

~ Mijn prog blog!


  • Serpie
  • Registratie: Maart 2005
  • Laatst online: 01-07-2023
Ik kan het hier niet testen, we gebruiken al lang geen vb6 meer op mijn werk, maar ik vond deze op Experts-Exchange. Wellicht helpt het.

Visual Basic:
1
2
3
4
5
6
7
8
9
If Inet1.StillExecuting = True Then
         Inet1.Cancel
         Inet1.Execute , "CLOSE"
        Do Until Inet1.StillExecuting = False
         DoEvents
        Loop
End If
         Set Inet1 = Nothing
        'File download aborted.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Vaak is het zo dat als een VB6 applicatie niet fatsoenlijk wil afsluiten er nog een window actief is, of iig niet normaal gesloten.

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.


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
heel vreemd, set inet = nothing geeft gewoon een keiharde compiler error,

en in het volgende stukje code geeft ".execute , "CLOSE"" een unable to connect to remote host error, terwijl dit alleen maar zou moeten cancelen...

Ik zie ".execute , "CLOSE""wel vaker gebruikt worden op internet, maar geen enkele keer lukt het niet of staan er deze fouten :? Dit probleem wordt als maar vreemder...

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
On Error GoTo Errorz


Dim sSource As String
Dim sDest As String
Dim sExecute As String
sSource = "test.vob"
sDest = "C:\test2.sds"
sExecute = "Get " & Chr(34) & sSource & Chr(34) & " " & Chr(34) & sDest & Chr(34)
With Inet
    .URL = "ftp://192.168.1.3" 'eigen pc, maar probleem gebeurt ook via een extern ftp
    .UserName = "lol"
    .Password = "flof"
    .Execute , sExecute
End With
Exit Sub

Errorz:
Inet.Cancel
Inet.Execute , "CLOSE"
Do Until Inet.StillExecuting = False
    DoEvents
Loop

~ Mijn prog blog!


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
therat10430 schreef op vrijdag 27 juli 2007 @ 00:28:
heel vreemd, set inet = nothing geeft gewoon een keiharde compiler error,
Dat kan toch ook niet, ik neem aan dat Inet de instantie van je control is?

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.


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
farlane schreef op vrijdag 27 juli 2007 @ 23:01:
[...]


Dat kan toch ook niet, ik neem aan dat Inet de instantie van je control is?
(sorry paar dagen weg geweest)

Maar dat staat zo precies als uitvoerbare code in Serpie's quote.

ook is Inet niet een instantie van een control, maar het control zelf =)

Verder kan ik inderdaad proberen om hhet onzichtbare form waar de inet controls opstaan zelf af te sluiten, maar dat verklaart het probleem niet: de hele applicatie wil geen verbindingen meer maken nadat ik een Inet.cancel heb uitgevoerd, het schermpje waar de inets opstaan hoeft dan nog niet gesloten te worden.

Tot nu toe heb ik nog geen work-around of oplossing kunnen vinden, terwijl een simple call naar een control om iets te cancellen toch niet zo moeilijk zou moeten zijn.. tenzij er met het control zelf iets mis is, maar omdat dit een officieel microsoft internet control is, lijkt me dat niet het geval (*ok ok er zit ook een compiler bug in VB6 die max 64kb aan non-statics vars per form accepteert @ compile time), maar over het algemeen zit het allemaal goed en denk ik dat ik iets mis.

Ik denk zelf nogsteeds dat de oplossing zit in:
.Execute "CLOSE" maar somehow zijn dit niet genoeg parameters. Misschien zou een lijst met alle mogenlijk commando's voor Inet.execute mij meer inzicht kunnen geven, maar dit heb ik nog niet kunnen vinden.

Vaak lijken ze sterk op standaard FTP commando's, maar soms net in een andere smaak.
op de volgende website vond ik de volgende mogelijke commandos voor FTP algemeen:
code:
1
2
3
bye, close, quit 
Accepted:
221Goodbye (system status).


Dit zal ik morgen is even proberen, (tis nu laat :> )

~ Mijn prog blog!


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
therat10430 schreef op dinsdag 31 juli 2007 @ 01:29:
ook is Inet niet een instantie van een control, maar het control zelf =)
Het control is de instantie. Bij VB moet er alleen perse een pictogram op omdat sleur en pleur zo veel makkelijker programmeert. not.
Verder kan ik inderdaad proberen om hhet onzichtbare form waar de inet controls opstaan zelf af te sluiten
Als je je applicatie ooit fatsoenlijk wilt afsluiten zul je wel moeten. Kan het feit dat het form invisible is niet voor problemen zorgen eigenlijk?
tenzij er met het control zelf iets mis is, maar omdat dit een officieel microsoft internet control is, lijkt me dat niet het geval
*kuch* Ja want bij MS hebben ze nooit bugs in hun software zitten *kuch* :P

Het is goed dat je de fout eerst bij jezelf zoekt maar ik zou er niet vanuit gaan dat een control per definitie bugvrij is alleen omdat het van MS komt.
Vaak lijken ze sterk op standaard FTP commando's, maar soms net in een andere smaak.
op de volgende website vond ik de volgende mogelijke commandos voor FTP algemeen:
Je dan wel loopt het risico dat als de control state bijhoudt mbt tot de verbinding je die op die manier onderuit haalt.

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.


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
farlane schreef op dinsdag 31 juli 2007 @ 14:03:
Als je je applicatie ooit fatsoenlijk wilt afsluiten zul je wel moeten. Kan het feit dat het form invisible is niet voor problemen zorgen eigenlijk?
Tot nu toe is dit geen probleem, het form is natuurlijk wel geladen.
*kuch* Ja want bij MS hebben ze nooit bugs in hun software zitten *kuch* :P

Het is goed dat je de fout eerst bij jezelf zoekt maar ik zou er niet vanuit gaan dat een control per definitie bugvrij is alleen omdat het van MS komt.
Haha ok ok, maar ook omdat ik niets nuttigs op internet vind hierover vermoed ik toch dat ik een puzzelstukje mis.
Je dan wel loopt het risico dat als de control state bijhoudt mbt tot de verbinding je die op die manier onderuit haalt.
Hmm.. op dit moment wordt er een logfiletje gepost als een state van dit control veranderd.. misschien is dit redelijk intensief voor een snelle state verandering, ik zal dit er even uitslopen, just to be sure (en dat logfiletje is eigenlijk allang niet meer nodig).
Edit:dat alvast eruit gesloopt, hmm net wat extra responsiveness bedankt voor de tip!

Verder heb ik nu wel mijn code geoptimalizeerd dat de kans dat een control gecanceld moet worden kleiner is. Maar toch.. must close connection! :P

[ Voor 3% gewijzigd door roy-t op 31-07-2007 14:49 ]

~ Mijn prog blog!

Pagina: 1