Autor Beitrag
Geneesys
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Mo 14.05.12 11:18 
Hallo alles zsm,

Ich möchte gerne das mein Programm nach dem durchlauf wieder von vorne anfängt.

Ich hatte es bereits mit Case und goto versucht nur leider wurde dabei nichts mehr in die ListBox eingetragen.
Nun ja erstmal der Code:
ausblenden 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:
        private void button1_Click(object sender, EventArgs e)
        {
           // Hier soll das Programm am ende wieder starten
            if (textBox1.Text != string.Empty)
            
            {
                System.Net.NetworkInformation.Ping p = new System.Net.NetworkInformation.Ping();
                System.Net.NetworkInformation.PingReply prep;
                string url = textBox1.Text;
                prep = p.Send(url);
                if (prep.Status == System.Net.NetworkInformation.IPStatus.Success)
                {
                    string address = prep.Address.ToString();
                    string time = prep.RoundtripTime.ToString();
                    listBox1.Items.Add("Ping: "+time+"ms");

                }
                else
                {
                    string status = prep.Status.ToString();
                    listBox1.Items.Add("Fehler: " + status);
                    
                }
            }
            else
                listBox1.Items.Add("URL-IP Fehler");
        }

Und hab hier soll es nach 5 Sekunden wieder von vorne anfangen.

Kann mir da jemand helfen ?
Ich habe es auch schon mit schleifen probiert aber ich habe ja eig. keine bedingungen ... Da ich ein Anfänger bin habe ich es nicht so richtig hinbekommen.

Wäre für jeden Tipp dankbar!

Gruß

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
mats74
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189
Erhaltene Danke: 26

Win 10
VS 2017/19, C++, C#
BeitragVerfasst: Mo 14.05.12 11:38 
Hallo Geneesys

Du könntest mit der Timer-Klasse den Event immer nach 5 Sek. auslösen.
Ist sicherlich die einfachste Lösung.

Ich würde dies aber nicht in einem Control-Event sondern in einer separaten Methode lösen.
Diese Methode kannst Du ja nach Bedarf bei einem Click-Ereignis sonst noch auslösen.

_________________
Gruss
mats74
Geneesys Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Mo 14.05.12 11:55 
Hey,

Danke für eine schnelle Antwort.

Kann ich das nicht vllt doch irgendwie mit "Case" lösen ?
Dann könnte ich am ende(GOTO)bevor er wieder von vorne beginnt noch ein
ausblenden C#-Quelltext
1:
System.Threading.Thread.Sleep( 500 );					

einfügen :/

Oder geht das alles vllt noch einfacher ?

Gruß
Geneesys

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 14.05.12 12:40 
Hallo Geneesys,

ein Thread.Sleep() legt deinen GUI-Thread lahm (d.h. die GUI wäre nicht mehr bedienbar -> "Programm reagiert nicht mehr"!).
Ein Timer ist dafür gerade die richtige Wahl.
Geneesys Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Mo 14.05.12 12:45 
Hättest du vllt hier ein beispiel für einen Timer ? (:

Wie ich einen Timer erstelle habe ich bereits etwas gefunden. Nur wie bekomme ich es nun in meinen Button :/

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
System.Timers.Timer aTimer = new System.Timers.Timer();
        
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Interval = 2000;
aTimer.Enabled = true;


Moderiert von user profile iconTh69: C#-Tags hinzugefügt
mats74
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189
Erhaltene Danke: 26

Win 10
VS 2017/19, C++, C#
BeitragVerfasst: Mo 14.05.12 13:38 
So müsste deine Codestruktur aussehen:
ausblenden 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:
namespace DeinNamespace
{
    public partial class DeineKlasse : Form
    {
        // Form initialisieren
        public DeineKlasse()
        {
            // Komponenten initialisieren
            InitializeComponent();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            // Methode ausfuehren
            DeineMethode();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // mach mal was
            // oder
            DeineMethode();
        }

        private void DeineMethode()
        {
            // oder mach sonst was
        }
    }
}

Dieses Beispiel zeigt Dir eine Klasse einer WinForm-anwendung.
Den Timer solltest Du nicht in Button-Event erstellen sondern nach dem initialisieren der Form oder direkt in der Klasse.
Das gleiche gilt für eine Konsolenanwendung.

_________________
Gruss
mats74

Für diesen Beitrag haben gedankt: Geneesys