[VB] Programma crasht en maakt geen gebruik van timeout

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • somers1234
  • Registratie: September 2008
  • Laatst online: 21:25
Hallo allemaal,

Na een hoop gekloot heb ik eindelijk mijn programma werkend dat connect met een FTP server. Alles gaat goed totdat de FTP server niet bereikbaar is.

Mijn code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Try

      Dim request As FtpWebRequest

      request = FtpWebRequest.Create("ftp://10.0.0.3/wol.txt")
      request.Method = WebRequestMethods.Ftp.GetFileSize
      request.Credentials = New Net.NetworkCredential("****", "****")
      request.Timeout = 1000

      Dim ftpResp As FtpWebResponse = request.GetResponse()

      msgbox(ftpResp.StatusDescription)

Catch ex As WebException

      msgbox(ex.Message)

End Try


Normaal geeft het programma een msgbox met de grootte van wol.txt. Als het bestand niet bestaat of er gaat iets anders verkeerd zoals foutieve login informatie of een onbereikbare FTP server dan geeft het programma een msgbox met de foutmelding erin.

Alles werkt zoals het zou moeten. Alleen als de FTP server niet bereikbaar is, dan doet het programma even moeilijk. Het programma crasht (reageert niet in de titelbalk) dan namelijk even niet (ongeveer een halve minuut) en geeft daarna de foutmelding dat de FTP server niet bereikbaar is.

De foutmelding is goed maar dat het programma even crasht wil ik graag oplossen.

Waar ik toen aan dacht was een timeout inbouwen. Met timeout werkt het programma iets beter maar nog niet precies zoals ik wil. De eerste keer dat ik op de knop druk krijg ik een msgbox met de melding dat er een time-out opgetreden is. Precies wat ik wil! Als ik hierna nog een keer op de knop druk, maakt het programma geen gebruik meer van de timeout en crasht dan weer even. Hierna krijg ik weer gewoon de melding dat de FTP server niet bereikbaar is.

Het probleem is dus dat het programma de eerste keer wel gebruik van de timeout maakt maar de keren daarop niet meer.

Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 18-09 20:12

Armageddon_2k

Trotse eigenaar: Yamaha R6

Threads,

Of als je VB.net gebruikt zou ik backgroundworkers aanraden.
Het probleem is dat je in 1 en dezelfde thread werkt waardoor je applicatie opslot gaat.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
somers1234 schreef op dinsdag 16 februari 2010 @ 15:41:
De foutmelding is goed maar dat het programma even crasht wil ik graag oplossen.
Het programma crashed niet maar staat te wachten op een synchrone call die je doet met een timeout van 30 seconden. Als je nou eens gewoon gebruik maakt van het native Timeout property i.p.v. zelf gaan zitten klooien met timers. [edit]Dat doe je dus al. Waar ik die timers dan las mag Joost weten 8)7
Niet dat 't veel zal oplossen (dan zul je naar asynchrone calls moeten) maar dat scheelt al een bak ranzige zooi.

[ Voor 41% gewijzigd door RobIII op 16-02-2010 15:47 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • somers1234
  • Registratie: September 2008
  • Laatst online: 21:25
request.Timeout = 100 (in mijn code) is toch het "native Timeout property"?

[edit]
Je hebt het al aangepast. Ik zal eens naar die asynchrone calls gaan kijken.

[ Voor 37% gewijzigd door somers1234 op 16-02-2010 15:48 ]


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 18-09 20:12

Armageddon_2k

Trotse eigenaar: Yamaha R6

Om locking van je app te voorkomen moet je dus een asynchrone call doen dmv, threads of backgroundworkers. (zoals mijn eerdere post)

Als je je huidige oplossing wilt blijven gebruiken kan je even kijken naar de KeepAlive property. zet deze eens op false.

[ Voor 5% gewijzigd door Armageddon_2k op 16-02-2010 15:49 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
somers1234 schreef op dinsdag 16 februari 2010 @ 15:47:
[edit]
Je hebt het al aangepast. Ik zal eens naar die asynchrone calls gaan kijken.
Ik zou, als ik zo vrij mag zijn, eerst eens op zoek gaan naar goeie tutorials. We hebben inmiddels al 8(!!) topics nodig om je te helpen bij het maken van een relatief simpel programmaatje. Ik denk dat 't verstandig is eerst eens even een beetje bezig te gaan met het begrijpen van de materie waar je mee bezig bent.

[ Voor 8% gewijzigd door RobIII op 16-02-2010 15:54 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • somers1234
  • Registratie: September 2008
  • Laatst online: 21:25
Armageddon_2k schreef op dinsdag 16 februari 2010 @ 15:49:
Om locking van je app te voorkomen moet je dus een asynchrone call doen dmv, threads of backgroundworkers. (zoals mijn eerdere post)

Als je je huidige oplossing wilt blijven gebruiken kan je even kijken naar de KeepAlive property. zet deze eens op false.
request.KeepAlive = False veranderd niets aan mijn probleem.
RobIII schreef op dinsdag 16 februari 2010 @ 15:50:
[...]

Ik zou, als ik zo vrij mag zijn, eerst eens op zoek gaan naar goeie tutorials. We hebben inmiddels al 8(!!) topics nodig om je te helpen bij het maken van een relatief simpel programmaatje. Ik denk dat 't verstandig is eerst eens even een beetje bezig te gaan met het begrijpen van de materie waar je mee bezig bent.
Correctie: dit is nog maar mijn 2e topic voor dit programma. De andere topics waren voor andere programma's.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
somers1234 schreef op dinsdag 16 februari 2010 @ 15:52:

Correctie: dit is nog maar mijn 2e topic voor dit programma. De andere topics waren voor andere programma's.
Sterk: het gaat hier over een wol.txt

Als ik dan even in jouw voordeel tel:
Wake-on-Lan in VB of C#
Wake up on lan via het internet
[VB] Met pingen computer status checken
Reactie op WOL pakketje
[VB] FtpWebResponse ongeldige URI?
[VB] Programma crasht en maakt geen gebruik van timeout

Maar goed; dat maakt mijn opmerking niet minder waar: je haalt gewoon zaken door elkaar en mist basiskennis. Dat is geen probleem, niet erg en niets om je voor te schamen; we zijn allemaal ooit zo begonnen. Maar het lult wel een stuk makkelijker als je de juiste termen weet te hanteren als je om input vraagt. Zo crashed je programma niet maar freezed je programma. En zo heb ik je middels DM n.a.v. je vorige topic moeten wijzen op Exception handling waarna prompt weer dit topic verschijnt met het volgende probleem.

[ Voor 29% gewijzigd door RobIII op 16-02-2010 16:08 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • somers1234
  • Registratie: September 2008
  • Laatst online: 21:25
Stel dat ik zo'n backgroundworker aan de praat krijg. Dan gaat het volgensmij nog steeds ca 30 seconde duren voordat er iets uitgevoerd wordt. De actie freezed dan volgensmij op de achtergrond?

[ Voor 8% gewijzigd door somers1234 op 16-02-2010 16:10 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
somers1234 schreef op dinsdag 16 februari 2010 @ 16:10:
De actie freezed dan volgensmij op de achtergrond?
Ja, en dus heeft je GUI er geen last van.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • somers1234
  • Registratie: September 2008
  • Laatst online: 21:25
Dan moet ik dus nog steeds wachten. Als hij de eerste keer wel een timeout heeft, dan moet het de keren daarop toch ook gaan?

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 17:02
somers1234 schreef op dinsdag 16 februari 2010 @ 16:25:
Dan moet ik dus nog steeds wachten. Als hij de eerste keer wel een timeout heeft, dan moet het de keren daarop toch ook gaan?
De timeout die je ziet lijkt me de standaard TCP connect(..) timeout. Indien er een andere timeout kan worden ingesteld dan is dat een custom iets; het kan niet standaard met winsock.

Als de timeout de 2e keer niet werkt, dan is dat een fout in die custom code, omdat er bijvoorbeeld een bepaalde state niet wordt opgeruimd.

Kan het zijn dat je iets bijzonders moet doen bij het opruimen van je opject, een dispose bijvoorbeeld?

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.

Pagina: 1