Ich bin gerade dabei ein Programm zuschreiben welches ein eine IP addresse einliest. Auf diese IP sollen 5 Ping geschickt werden. Nachdem Ersten Ping soll dem Benutzer Gezeigt werden (Mit einer TextBox die Rot oder Grün wird) ob der Ping erfolgreich war...dann soll der Zweite Ping ausgeführt werden und dann soll in der zweiten TextBox wieder angezeigt werden ob der Ping erfolgreich war...insgesamt gibt es 5pings mit 5 Textboxen....
Das Programm Funktioniert auch...ABER wenn ich es bewege bleibt das Programm hängen...
also habe ich mal rumgeguckt...und mir ist der BackgroundWorker ins augegefallen....
habe meine Pings in den BackgroundWorker eingefügt...
das Problem ist...die try catch funktion läuft solange bis was im fenster angezeigt werden soll...also bis zum ersten ping wo er dann grün bzw. rot werden soll...dann bricht sie ab und geht in die catch funktion.
hier mal mein code
vllt kann mir ja jemand helfen...
vielen dank im vorraus
Das Programm Funktioniert auch...ABER wenn ich es bewege bleibt das Programm hängen...
also habe ich mal rumgeguckt...und mir ist der BackgroundWorker ins augegefallen....
habe meine Pings in den BackgroundWorker eingefügt...
das Problem ist...die try catch funktion läuft solange bis was im fenster angezeigt werden soll...also bis zum ersten ping wo er dann grün bzw. rot werden soll...dann bricht sie ab und geht in die catch funktion.
hier mal mein code
Code:
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;
namespace PingTool
{
public partial class Form1 : Form
{
String add_1 = "";
String status1 = "ok";
long p1_1, p1_2, p1_3, p1_4, p1_5, p1_g;
int sleeptime = 2000;
int maxtime = 50;
BackgroundWorker bw = new BackgroundWorker();
public Form1()
{
InitializeComponent();
bw.WorkerSupportsCancellation = true;
bw.WorkerReportsProgress = true;
bw.DoWork +=
new DoWorkEventHandler(bw_DoWork);
bw.ProgressChanged +=new ProgressChangedEventHandler(bw_ProgressChanged);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
}
public void ping1()
{
if (checkBox1.Checked == true)
{
add_1 = textBox1.Text;
try
{
int errorcunt1 = 0;
Ping p1 = new Ping();
PingOptions po1 = new PingOptions();
//PingReply pingReply1 = p1.Send(add_1);
ad_p1_1.BackColor = Color.White;
ad_p1_1.Text = "";
// this.Refresh();
PingReply pingReply1_1 = p1.Send(add_1);
p1_1 = pingReply1_1.RoundtripTime;
if (pingReply1_1.Status.ToString() != "Success")
{
errorcunt1++;
ad_p1_1.BackColor = Color.Red;
ad_p1_1.Text = "-";
ad_p1_u.Text = DateTime.Now.ToString();
// this.Refresh();
}
else
{
ad_p1_1.BackColor = Color.Green;
ad_p1_1.Text = p1_1.ToString();
ad_p1_u.Text = DateTime.Now.ToString();
//this.Refresh();
}
ad_p1_2.BackColor = Color.White;
ad_p1_2.Text = "";
// this.Refresh();
System.Threading.Thread.Sleep(sleeptime);
PingReply pingReply1_2 = p1.Send(add_1);
p1_2 = pingReply1_2.RoundtripTime;
if (pingReply1_2.Status.ToString() != "Success")
{
errorcunt1++;
ad_p1_2.BackColor = Color.Red;
ad_p1_2.Text = "-";
ad_p1_u.Text = DateTime.Now.ToString();
// this.Refresh();
}
else
{
ad_p1_2.BackColor = Color.Green;
ad_p1_2.Text = p1_2.ToString();
ad_p1_u.Text = DateTime.Now.ToString();
// this.Refresh();
}
ad_p1_3.BackColor = Color.White;
ad_p1_3.Text = "";
// this.Refresh();
System.Threading.Thread.Sleep(sleeptime);
PingReply pingReply1_3 = p1.Send(add_1);
p1_3 = pingReply1_3.RoundtripTime;
if (pingReply1_3.Status.ToString() != "Success")
{
errorcunt1++;
ad_p1_3.BackColor = Color.Red;
ad_p1_3.Text = "-";
ad_p1_u.Text = DateTime.Now.ToString();
// this.Refresh();
}
else
{
ad_p1_3.BackColor = Color.Green;
ad_p1_3.Text = p1_3.ToString();
ad_p1_u.Text = DateTime.Now.ToString();
// this.Refresh();
}
ad_p1_4.BackColor = Color.White;
ad_p1_4.Text = "";
//this.Refresh();
System.Threading.Thread.Sleep(sleeptime);
PingReply pingReply1_4 = p1.Send(add_1);
p1_4 = pingReply1_4.RoundtripTime;
if (pingReply1_4.Status.ToString() != "Success")
{
errorcunt1++;
ad_p1_4.BackColor = Color.Red;
ad_p1_4.Text = "-";
ad_p1_u.Text = DateTime.Now.ToString();
// this.Refresh();
}
else
{
ad_p1_4.BackColor = Color.Green;
ad_p1_4.Text = p1_4.ToString();
ad_p1_u.Text = DateTime.Now.ToString();
//this.Refresh();
}
ad_p1_5.BackColor = Color.White;
ad_p1_5.Text = "";
//this.Refresh();
System.Threading.Thread.Sleep(sleeptime);
PingReply pingReply1_5 = p1.Send(add_1);
p1_5 = pingReply1_5.RoundtripTime;
if (pingReply1_5.Status.ToString() != "Success")
{
errorcunt1++;
ad_p1_5.BackColor = Color.Red;
ad_p1_5.Text = "-";
ad_p1_u.Text = DateTime.Now.ToString();
// this.Refresh();
}
else
{
ad_p1_5.BackColor = Color.Green;
ad_p1_5.Text = p1_5.ToString();
ad_p1_u.Text = DateTime.Now.ToString();
//this.Refresh();
}
p1_g = (p1_1 + p1_2 + p1_3 + p1_4 + p1_5) / 5;
if ((errorcunt1 <2))
{
status1 = "ok";
}
if ((errorcunt1 >=2) && (((p1_g == 0) || p1_g >= maxtime)))
{
if (status1 == "ok")
{
System.Net.Mail.SmtpClient mail = new System.Net.Mail.SmtpClient();
mail.Host = "IP";
mail.Send("EMAIL@web.de", "EMAIL@web.de", "Fehlermeldung PingTool", "Die Adresse " + add_1 + " hat eine Fehlermeldung! Bitte Überprüfen\nDurchschnittantwortzeit beträgt: " + p1_g + "ms");
status1 = "gesendet";
}
}
}
catch
{
if (status1 == "ok")
{
System.Net.Mail.SmtpClient mail = new System.Net.Mail.SmtpClient();
mail.Host = "IP";
mail.Send("EMAIL@web.de.de", "EMAIL@web.de", "Fehlermeldung PingTool", "Die Adresse " + add_1 + " hat eine Fehlermeldung! Bitte Überprüfen\nDurchschnittantwortzeit beträgt: " + p1_g + "ms");
status1 = "gesendet";
}
}
}
}
private void button1_Click(object sender, EventArgs e)
{
if (bw.IsBusy != true)
{
bw.RunWorkerAsync();
}
}
private void button2_Click(object sender, EventArgs e)
{
if (bw.WorkerSupportsCancellation == true)
{
bw.CancelAsync();
}
}
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
ping1();
}
public void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.tbProgress.Text = (e.ProgressPercentage.ToString() + "%");
}
private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if ((e.Cancelled == true))
{
this.tbProgress.Text = "Canceled!";
}
else if (!(e.Error == null))
{
this.tbProgress.Text = ("Error: " + e.Error.Message);
}
else
{
this.tbProgress.Text = "Done!";
}
}
vllt kann mir ja jemand helfen...
vielen dank im vorraus