Hey, ich habe mir ein kleines Tool geschrieben was den Online Status prüft.
Bin auch so weit schon fertig - jetzt kommt aber ein fehler beim Starten wenn die Internet Verbindung fehlt oder diese plötzlich getrennt wird.
Könnt ihr euch das ganze mal ansehn ?
Danke im Vorraus
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;
using Ping_Tool;
namespace Online
{
public partial class online : Form
{
public online()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Start();
//Ping Sender = new Ping();
//PingReply Result = Sender.Send("Google.de");
//if (Result.Status == IPStatus.Success)
//{
// label_online.Text = ("ONLINE");
// label_online.BackColor = System.Drawing.Color.Green;
//}
//else
//{
// label_online.Text = ("OFFLINE");
// label_online.BackColor = System.Drawing.Color.Red;
//}
}
private void label_online_Click(object sender, EventArgs e)
{
//Ping Sender = new Ping();
//PingReply Result = Sender.Send("Google.de");
//if (Result.Status == IPStatus.Success)
//{
// label_online.Text = ("ONLINE");
// label_online.BackColor = System.Drawing.Color.Green;
//}
//else
//{
// label_online.Text = ("OFFLINE");
// label_online.BackColor = System.Drawing.Color.Red;
//}
}
private void button_info_Click(object sender, EventArgs e)
{
Form_Info frm = new Form_Info();
frm.Show();
}
private void ticker(object sender, EventArgs e)
{
Ping Sender = new Ping();
PingReply Result = Sender.Send("Google.de");
if (Result.Status == IPStatus.Success)
{
label_online.Text = ("ONLINE");
label_online.BackColor = System.Drawing.Color.Green;
}
else
{
if (Result.Status == IPStatus.TimedOut)
label_online.Text = ("OFFLINE");
label_online.BackColor = System.Drawing.Color.Red;
}
}
}
}
Hokuspokus Fidibus
Du postest zwar richtig viel Code aber leider lässt du deine Entscheidende PING Klasse mal eben weg... Ob da nun sauberes Exceptionhandling drin ist... kann ich bzw. wir hier nur raten 😃....
Was der genaue Fehler ist (Stichwort: Fehlermeldung) teilst du uns leider auch nicht weg. Spontan geraten hätte ich un einfach mal.. du packst um deinen schönen Aufruf:
PingReply Result = Sender.Send("Google.de");
ein try/catch drum rum und wirst dann eine korrekte Fehlerbehandlung bauen können 😉.
Lies dich mal ein auf MSDN zum Thema Exceptionhandling
Kontakt & Blog: www.giesswein-apps.at
Hier die etsprechende Fehlermeldung siehe Anhang.
Und im Detail:
Fehlermeldung:
System.Net.NetworkInformation.PingException: Während einer Pinganforderung ist eine Ausnahme aufgetreten. ---> System.Net.Sockets.SocketException: Der angegebene Host ist unbekannt
bei System.Net.Dns.GetAddrInfo(String name)
bei System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6)
bei System.Net.Dns.GetHostAddresses(String hostNameOrAddress)
bei System.Net.NetworkInformation.Ping.Send(String hostNameOrAddress, Int32 timeout, Byte[] buffer, PingOptions options)
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.Net.NetworkInformation.Ping.Send(String hostNameOrAddress, Int32 timeout, Byte[] buffer, PingOptions options)
bei System.Net.NetworkInformation.Ping.Send(String hostNameOrAddress)
bei Online.online.ticker(Object sender, EventArgs e) in D:\DROPBOX\Dropbox\Programmierung\Online\Online\online.cs:Zeile 83.
bei System.Windows.Forms.Timer.OnTick(EventArgs e)
bei System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Wie soll er auch, wenn Du keine Verbindung hast.
Aber das sind Grundlagen, daher beachte bitte [Hinweis] Wie poste ich richtig? Punkt 1.1 und 1.1.1. Danke.
Diese Einschätzung kann ich mir nur anschließen. Immerhin muss man bei Netzwerkverbindungen immer mit Exceptions rechnen und diese daher auch behandeln.
Davon abgesehen ist der Exception-Text auch aussagekräftig und eindeutig.
Außerdem ist es nicht nett und nicht erwünscht, einfach Code zu posten und uns dann den Fehler suchen zu lassen, siehe [Hinweis] Wie poste ich richtig? Punkt 4.
Darauf, dass zu einer Problembeschreibung immer auch dazugehört, von alleine die exakte Fehlermeldung anzugeben, wurdest du schon hingewiesen. Es steht auch in [Hinweis] Wie poste ich richtig? Punkt 5.