Entwickler-Ecke
ASP.NET und Web - Programmabsturz bei nicht vorhandener Internetverbindung
epinephrine87 - Mo 13.07.09 14:35
Titel: Programmabsturz bei nicht vorhandener Internetverbindung
Hallöchen ;)
Ich bin jetzt ziemlich weit mit meinem Projekt, doch habe ich da ein wirklich mieses problem, und zwar lasse ich beim Initialize eine Serverstatus Grafik aus dem Internet darstellen, soweit ist es ja gut und funktioniert auch Live, nebenbei habe ich auch nen UpdateChecker der nach einer neuen Version des Programmes sucht (auf dem Webspace),
Nur leider habe ich feststellen müssen, dass das Programm sofort abstürzt wenn ich keine Aktive Internetverbindung habe.
Habe es schon mit Ping versucht aber das Funktioniert nicht, bzw er funktioniert wenn ich Online bin, aber offline sollte er das unterbinden die Verbindung zu nutzen.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| public void serverStatus() { Ping ping = new Ping(); string address = "www.gametracker.com"; int timeout = 5000; PingReply pingReply = ping.Send(address, timeout); switch (pingReply.Status) { case IPStatus.Success: { System.Windows.Forms.Timer asd = new System.Windows.Forms.Timer(); asd.Tick += new EventHandler(asd_Tick); asd.Interval = 5000; asd.Start(); pictureBox2.LoadAsync("http://cache.www.gametracker.com/server_info/81.3.59.166:50560/b_560x95.png"); } break; case IPStatus.TimedOut: { return; } break; case IPStatus.TimeExceeded: { return; } break; case IPStatus.HardwareError: { return; } break; } } |
Gibt es da eine Lösung um das zu unterbinden?
Mfg
Moderiert von
Christian S.: Code- durch C#-Tags ersetztModeriert von
Christian S.: Topic aus C# - Die Sprache verschoben am Mo 13.07.2009 um 14:38
Kha - Mo 13.07.09 14:47
Ein .NET-Programm "stürzt" selten einfach "ab", sondern wirft eine Exception, deren Inhalt uns ungemein weiterhelfen würde. Aber wenn ich so in die Doku schaue, wirft LoadAsync eigentlich gar keine Exception :?!?: . Sie steckt stattdessen im LoadCompleted-Event in den EventArgs.
epinephrine87 - Mo 13.07.09 14:49
Kha hat folgendes geschrieben : |
Ein .NET-Programm "stürzt" selten einfach "ab", sondern wirft eine Exception, deren Inhalt uns ungemein weiterhelfen würde. Aber wenn ich so in die Doku schaue, wirft LoadAsync eigentlich gar keine Exception :?!?: . Sie steckt stattdessen im LoadCompleted-Event in den EventArgs. |
Das bedeutet für mich ich sollte LoadAsync verwerfen und stattdessen Load ausprobieren?! Im Prinzip machen beide ja soziemlich dasselbe, ich möchte halt nur das Bild anzeigen lassen, und das alle 5000ms aktualisieren.
Edit:
Eigentlich kann es ja garnicht mit dem Bild zusammen hängen, da ich ja nur das Bild anzeigen lasse wenn der Ping erfolgreich war oO
Und nach Update Prüfen ebenfalls.
Ich denke es liegt am Ping, der ja ausgeführt wird sobald das Programm startet, aber das ist ja ein widerspruch in sich selbst.
Zum Testen deaktiviere ich die Netzwerkverbindung, Starte das Programm und Schwupps.. .exe hat ein Problem festgestellt...
Ralf Jansen - Mo 13.07.09 16:50
Zitat: |
Ich denke es liegt am Ping, der ja ausgeführt wird sobald das Programm startet, aber das ist ja ein widerspruch in sich selbst. |
Warum ist das wiedersprüchlich? Du machst einen Ping auf einen DNS Namen. Also muß der Name von einem DNS Server in eine IP Adresse umgewandelt werden. Den DNS Server sucht er sich üblicherweise im Netz das aber nicht verfügbar ist. Also bekommst du wahrscheinlich eine SocketException. Solange du uns aber nicht sagen kannst welche Exception du denn nun wirklich bekommst ist dir nur schwer zu helfen und wir können nur raten. Du solltest vielleicht mal ein Exceptionhandling einbauen das dir auch die eigentliche Exception liefert und die uns mitteilen.
Kha - Mo 13.07.09 17:22
epinephrine87 hat folgendes geschrieben : |
Das bedeutet für mich ich sollte LoadAsync verwerfen und stattdessen Load ausprobieren?! |
Ich habe mich nur gewundert, wie (noch vor dem Ping) überhaupt eine Exception entstehen konnte. Entferne doch bitte das nutzlose Pingen wieder und debugge das Programm über F5 (Debug -> Start Debugging).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!