none
Codeoptimierung RRS feed

  • Frage

  • Hi Leute, 

    ich programmiere erst seit kurzem und habe mir ein Programm für die Arbeit zusammengeschustert. 

    Ich sehe selbst das es nicht schön ist, aber mal abgesehen davor würde ich die einzelnen Aufgaben wie den Ping z.B. gern
    in eine Funktion packen wenn das möglich ist.. habe das schon versucht, meine Vorkenntnisse aus Swift reichen hierzu aber 
    nicht aus. Außerdem muss ich die einzelnen Pings und Transferordnerlöschungen jeweils mehr als 50 mal hintereinander durchführen. Deshalb hoffe ich das mir jemand sagen kann, wie ich das ganze etwas eleganter lösen kann als stundenlang Copy-Paste zu drücken :)

    Vielen Dank im Voraus

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Net.NetworkInformation;
    using System.IO;
    
    namespace RemoteCheck
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                //
                //
                //Label leeren
                lblPingGoogle.Text = "";
                lblPingGoogleDNS.Text = "";
                lblTransferlöschenGoogle.Text = "";
                lblTransferlöschenGoogleDNS.Text = "";
            }
    
            private void btnPing_Click(object sender, EventArgs e)
            {
                Cursor = Cursors.WaitCursor; //WaitCurser aktivieren
                btnTransferlöschen.Enabled = false; // Transferordner löschen Button deaktivieren
                //
                //Google Server
                //
                Ping googleServer = new Ping(); //Ping erstellen 
                PingReply googleErgebnis = googleServer.Send("8.8.8.8"); //PingReply vom Host
                if (googleErgebnis.Status == IPStatus.Success) //Wenn Erfolg etc..
                {
                    lblPingGoogle.Text = "Erfolgreich";
                }
                else
                {
                    lblPingGoogle.Text = "Fehlgeschlagen";
                }
                //
                //Google DNS Server
                //
                Ping googleServerDNS = new Ping(); //Ping erstellen 
                PingReply googleServerDNSErgebnis = googleServerDNS.Send("8.8.4.4"); //PingReply vom Host
                if (googleServerDNSErgebnis.Status == IPStatus.Success) //Wenn Erfolg etc..
                {
                    lblPingGoogleDNS.Text = "Erfolgreich";
                }
                else
                {
                    lblPingGoogleDNS.Text = "Fehlgeschlagen";
                }
                //
                //
                //
                btnTransferlöschen.Enabled = true; //Transferordner löschen Button aktivieren
                Cursor = Cursors.Default; //Default Cursor aktivieren 
            }
    
            private void btnTransferlöschen_Click(object sender, EventArgs e)
            {
                Cursor = Cursors.WaitCursor; //WaitCurser aktivieren
                btnPing.Enabled = false; //Ping Button deaktivieren
                //
                //Google Server
                //
                string[] filePathsGoogle = Directory.GetFiles(@"c:\\testordner1\"); //Filepath festlegen
    
                foreach (string filePath in filePathsGoogle)
                {
                    File.Delete(filePath); //Dateien aus Transferordner löschen
                }
    
                int diGoogle = Directory.GetFiles(@"c:\\testordner1\").Length; //Anzahl der Dateien aus Ordner holen
    
                if (diGoogle == 0) //Wenn 0 dann ..
                {
                    lblTransferlöschenGoogle.Text = "Erfolgreich";
                }
                else if (diGoogle == 1) //Wenn 1 dann ..
                {
                    lblTransferlöschenGoogle.Text = "Es ist noch eine Datei im Tranferordner";
                }
                else //Wenn mehr als 1 dann ..
                {
                    lblTransferlöschenGoogle.Text = "Es sind noch mehrere Dateien im Transferordner";
                }
                //
                //Google DNS Server 
                //
                string[] filePathsGoogleDNS = Directory.GetFiles(@"c:\\testordner2\"); //Filepath festlegen
    
                foreach (string filePath in filePathsGoogleDNS)
                {
                    File.Delete(filePath); //Dateien aus Transferordner löschen
                }
    
                int diGoogleDNS = Directory.GetFiles(@"c:\\testordner2\").Length; //Anzahl der Dateien aus Ordner holen
    
                if (diGoogleDNS == 0) //Wenn 0 dann ..
                {
                    lblTransferlöschenGoogleDNS.Text = "Erfolgreich";
                }
                else if (diGoogleDNS == 1) //Wenn 1 dann ..
                {
                    lblTransferlöschenGoogleDNS.Text = "Es ist noch eine Datei im Tranferordner";
                }
                else //Wenn mehr als 1 dann ..
                {
                    lblTransferlöschenGoogleDNS.Text = "Es sind noch mehrere Dateien im Transferordner";
                }
                //
                //
                //
                btnPing.Enabled = true; //Ping Button aktivieren
                Cursor = Cursors.Default; //Default Cursor aktivieren
            }
        }
    }
    


    Freitag, 26. Oktober 2018 21:20

Antworten

  • Hallo,

    wie wäre es so:

    void ButtonClick()
    {
        var ok = PingTo("8.8.4.4");
        if (ok)
        {
            //Erfolgreich
        }
    
        //Man könnte auch eine Liste anlegen und die durch pingen
        List<string> list = new List<string>() {
                    "8.8.4.4", "8.8.8.8"
                };
        foreach (var item in list)
        {
            ok = PingTo(item);
        }
    
    }
    
    bool PingTo(string ip)
    {
        Ping ping = new Ping();
        var status = ping.Send(ip);
        if (status.Status == IPStatus.Success)
        {
            return true;
        }
    
        return false;
    }
    
    void TrashFolder(string path)
    {
        if (System.IO.Directory.Exists(path))
        {
            var di = new System.IO.DirectoryInfo(path);
            di.Delete(true);
        }
    }
    
    void TrashFolder2(string path)
    {
        //Eine weiter möglichkeit alle Dateien und Unterordner zu löschen. Der unterschied ist das der Hauptordner bleibt
    
        var files = System.IO.Directory.GetFiles(path);
        if (files.Length > 0)
            foreach (var item in files)
            {
                System.IO.File.Delete(item);
            }
    
        var folders = System.IO.Directory.GetDirectories(path);
        if (folders.Length > 0)
            foreach (var item in folders)
            {
                TrashFolder2(item);
            }
    }


    Gruß Thomas
    13 Millionen Schweine landen jährlich im Müll
    Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings

    Freitag, 26. Oktober 2018 22:30