Autor Beitrag
epinephrine87
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17

Windows Vista Ultimate x64
C# (Visual Studio Express 08)
BeitragVerfasst: Mo 13.07.09 14:35 
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.

ausblenden volle Höhe 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 user profile iconChristian S.: Code- durch C#-Tags ersetzt
Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Mo 13.07.2009 um 14:38
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17

Windows Vista Ultimate x64
C# (Visual Studio Express 08)
BeitragVerfasst: Mo 13.07.09 14:49 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 13.07.09 17:22 
user profile iconepinephrine87 hat folgendes geschrieben Zum zitierten Posting springen:
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).

_________________
>λ=