Laden...
X
XertoX myCSharp.de - Member
Systeminformatiker Deutschland Dabei seit 16.09.2007 12 Beiträge
Benutzerbeschreibung

Forenbeiträge von XertoX Ingesamt 12 Beiträge

18.06.2009 - 01:02 Uhr

So ich habe mir das mal mit nem Timer angeschaut, nicht nur das das hierfür die bessere Lösung wäre, den Bsp. code, den ich gefunden habe habe ich auf anhieb verstanden und umsetzen können 😉
Naja so habe ich wenigstens mal mit Threads experimentiert.
Der Timer läuft ja so und wird auch beim Beenden des Progs auch beendet. also was will ich mehr.
Generell Threads, die nicht wie bei mir mit einer Endlosschleife versehen sind, sind doch beendet wenn sie mit ihrem Durchlauf fertig sind oder? Die braucht man doch beim Beenden des Progs nicht beenden?
Oder sollte man Generell in einer Methode Abfragen ob Threads noch laufen und die dann Beenden und diese Methode dem (ich glaube) Form_Closing verpassen das vorm SChließen diese Methode mit den Abfragen ausgeführt wird?

17.06.2009 - 11:11 Uhr

so jetzt habe ich es auch hinbekommen und auch grob verstanden 😉
Punkt 2 konnte ich weglassen da ich mit nem Delegate aus dem "Zähl-Thread" den Labeltext ändern kann.

Hier mal mein Code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace test
{
    public partial class Form1 : Form
    {
        //Delegate einrichten um auf meinLabel zugreifen zu können
        public delegate void dela(int zahl);
        
        
        
        public Form1()
        {
         InitializeComponent();

            //Thread einrichten, "zahler" ist die Methode die im Thread laufen soll
            ThreadStart threaddele = new ThreadStart(zaehler);
            Thread einthread = new Thread(threaddele);
         
            einthread.Start(); //Thread starten
        }


       //Methode die als Delegate verwendet wird
        public void refresher(int i)
        {
         meinLabel.Text = Convert.ToString(i);
        }

        
       
        
        public void zaehler()
        {

            dela mydele = new dela(refresher); //Dem Delegate die Methode zuweisen
          
            int zaehlwert = 0;
            
            
            while(true)
            {
                 zaehlwert++;
                    meinLabel.BeginInvoke(mydele, zaehlwert);
                    Thread.Sleep(300);
             }
            }

  }
}

Jetzt muss ich nur noch dafür sorgen das wenn ich die GUI schließe(das tolle X drücke) auch der Thread beendet wird.
Gibt es da auch gute Ideen?

Ich dachte mir vlt.

  1. Im Thread irgendwie ne Var abfragen ob die GUI "noch an ist"
    oder
  2. Im Form_Close oder so irgendwie Threat.Abort oder so...
    Hat da jmd gute Ideen?

Vielen Dank
Gruß XertoX

16.06.2009 - 07:14 Uhr

hi
schonmal danke für die Antworten, hatte gestern nur leider keine Zeit irgendetwas größ zu testen.
@ErfinderDesRades: Zu deinem Code ich habe den mal schnell nur copy/paste und da kam ne Fehlermeldung in der Zeile

 Action<int> display = i => label1.Text = i.ToString();

Ich glaube unbekannter Operator oder so. Hatte abe keine Zeit das mal allers genauer anzuschauen.

Nachdem ich jetzt unmengen an Text gelesen habe glaube ich weiß ich vlt wo mein Problem liegt/lag.
Ich habe den Counter zwar in einen Thread gepackt. Aber der war synchron. Das prog hat erst weiter gemacht wenn der Thread abgearbeitet war. DA da ja aber eine For Schleife mit Thread.sleep drin war hat das länger gedauert und das Prog blockte...

Meine
Überlegung jetzt:

  1. den Counter in einen Asynchronen Thread
  2. Label refresher in einen Asynchronen thread der durchgehen läuft( mit ner While Schleife)
  3. Irgendwie mit deleganten schauen das ich von 1 nach 2 den Counterwert bekomm.

Ich hoffe das geht so auf wie ich mir das denk... Ich probiers nachher mal und meld mich
Gruß
XertoX

15.06.2009 - 06:56 Uhr

ok das mit dem Invoke.Required kann ich noch nachvollziehen, das man das weglassen kann.
Aber warum "leg den GuI thread schlafen"??
er führt doch die Gui Aktion label1.Text doch vor der "Pause" aus.
Wenn ich das Thread.Sleep() weg lasse habe ich immer sofort den letzten Variablenvert in der Ausgabe. Ich möchte aber doch das man den Schritt für Schritt sieht.
Für das Prog mit den Festplattenwerten hatte ich das in ne "Endlosschleife" while(true)
gepackt aber das ging gar nicht????

Wie macht man das denn jetzt ich habe doch schon extra einen nebenthread offen um da eine "Pause" zu machen, damit das Programm nicht hängt.

14.06.2009 - 23:01 Uhr

Hi@all
Ich wollte euch eigentlich nicht wegen so einer Kleinigkeit stören, aber ich bekomm es einfach nicht.
Ich bin das ganze WE dabei ein Tool zu schreiben das mir die Festplatten und deren Größe Freier Belegter GesamtSpeicherplatz anzeigt.
In der Konsole war mir das clearen und neuschreiben zu "flakerig"
ALso dacht ich mir Probierste das mal mit ner GUI.
Ich wollt die Varialbeln in nem Label ausgeben.
Es hat aber alles nicht geklappt. DAnn habe ich was über Threading gelesen ausprobiert. Als das dann irgendwann mal klappen wollte hatte ich das Prob mit " Ungültiger threadübergreifender Vorgang" da habe ich dann was über invoke gefunden. ABer es klappt trotzem alles nicht.

Jetzt habe ich zum Verständnis halt nur ein Prog mit nem Label und einem COunter der in dem Label ausgegeben werden soll. Ich bekomm das aber einfach nicht hin und ich wei0 nicht warum.
Hier mein Code:
Ich hoffe ihr helft mir 😉
Danke

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            Thread myt = new Thread(new ThreadStart(zaehler));
             myt.Start();
                

        }




        public void zaehler()
        {
        int i;
       if (label1.InvokeRequired)
        {
            label1.Invoke(new MethodInvoker(zaehler));
            return;
        }
            

        for (i = 0; i < 100; i++)
        {
            label1.Text = i.ToString();
            i++;
            Thread.Sleep(1000); 
        }
        }
}
}

20.08.2008 - 19:19 Uhr

hi@all

So habe mich jetzt mal wieder dieser sache gewidmet. und muss sagen JUHU ich bin etwas weiter gekommen, habe es geschafft ein UDP Paket an den gameserver schicken können und konnte per paketanalyser sehen das er auch antwortet nur bekomm ich das in meinem Prog nicht hin mit dem UDP listener und recive/ recive from usw... es klappt iwi nicht und aus der SDK faq werde ich auch nicht schlau da bekomm ich dann immer fehler wegen EndPoint oder so....

kann mir mal jmd nen ganz "leichten" Code für nen UDP listener geben der zu meinem prog passt.


 static void Main(string[] args)
        {
  
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,
                ProtocolType.Udp);

            Socket ss = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,
            ProtocolType.Udp);

            IPAddress broadcast = IPAddress.Parse("192.168.178.21");


            byte[] se = Encoding.ASCII.GetBytes("rcon \"test\" echo test");


 
        byte[] HZ = { 255, 255, 255, 255};

           byte[] fertig = new byte[25];
            IPEndPoint ep = new IPEndPoint(broadcast, 28960);
          
           
            Array.Copy(HZ,0,fertig,0,4);
            Array.Copy(se, 0, fertig, 4, 21);
            s.SendTo(fertig, ep);
           
          
            Console.WriteLine("Message sent to the broadcast address");
          

            Console.ReadLine();
        }
    }
}

so wie muss denn jetzt nen listener da rein... davor oder dahinter???

ich dachte irgendwie sowas in der art

 UdpClient receivingUdpClient = new UdpClient(28960);

            //Creates an IPEndPoint to record the IP Address and port number of the sender. 
            // The IPEndPoint will allow you to read datagrams sent from any source.
            IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 28960);
            try
            {

                // Blocks until a message returns on this socket from a remote host.
                Byte[] receiveBytes = receivingUdpClient.Receive(ref RemoteIpEndPoint);

                string returnData = Encoding.ASCII.GetString(receiveBytes);

                Console.WriteLine("This is the message you received " +
                                             returnData.ToString());
                Console.WriteLine("This message was sent from " +
                                            RemoteIpEndPoint.Address.ToString() +
                                            " on their port number " +
                                            RemoteIpEndPoint.Port.ToString());
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }

das hatte ich im inet gefunden bekomm es aber nicht zum laufen.

Danke schonmal für die Hilfe
XertoX

15.08.2008 - 10:41 Uhr

👍 cool danke das ist schon mal ein Schritt in die richtige Richtung.
Nur was ist denn mit .rar ?

14.08.2008 - 20:42 Uhr

Hi@all

Also ich habe vor ein Prog zu schreiben womit man Zip UND rar Dateien die auch passwortgeschützt sind, entpacken kan(vlt auch mehrere gleichzeitig).
So habe hier mal etwas gesucht und auch gegoogelt.
DA kam ich zu folgendem Ergebnis.
Es gibt dieses SharpZipLib womit man wohl zip dateien packen und entpacken kann. richtig? Dann habe ich was von 7zip gelesen was wohl auch packen und entpacken von zip und rar kann.... aber irgendwie hmm ist das alles nicht so das ware, was ich so an infos gefunden habe. 😦
Da ich noch nicht so viel Erfahrung habe im coden,
bräuchte ich Hilfe.
zum ersten was ich brauch(dlls.,methoden, vlt sogar schon code von anderen Projekten)
das ich mich da reinfuchsen kann.
also wenn ihr was habt/ wisst immer her damit ich bin nicht lesefaul 😉
vielen dank im Vorraus. Ich hoffe der thread ist hier richtig...

06.02.2008 - 16:17 Uhr

Hi@all.
Also Ich habe vor ein Programm zu schreiben, was so ähnlich ist wie HLSW, mit dem man z.b. Nachrichten an den Server schicken kann, Map Wechsel usw. Für die Spiele der CoD reihe.

Jetzt habe ich mir nen Packetsniffer installiert um zu sehen was sich an meiner Netzwerkkarte so abspielt, wennich HLSW starte...
Sehen konnte ich das UDP packete geschickt werde.

Jetzt habe ich schon etwas gelesen und rumprobiert mit UDPClient und UDPClient.Connect und nen string Inhalt geschickt. Laut Inhalt des Packetsniffers hat das auch geklappt. nur das Packet, welches ich vom Server bekommen hatte hatte als Stringantwort ????disconnect

Hier im Forum habe ich schon gesucht und nen treat gefunden da hieß es man soll das sich über Sockets TCP/Ip und das rcon Protokoll informieren... So übers Protokoll finde ich nichts.
mit TCP/IP sockets hatte ich auch rumprobiert aber das klaapt bei mir mal garnicht.
Geh ich das alles komplett falsch an???
Hat jmd schon erfahrung mit sowas und kann mit Tipps geben, damit ich auf den richtigen WEg komme ???

Cu
XertoX

18.01.2008 - 15:22 Uhr

schon mal thx für die Kritik...

  • gut die Monsterbuttons hmm ok man könnte sie etwas kleiner machen. 🙂
  • mit den Variablen mit schreibweise meinst du andere "Namen" geben?
  • mit der Pfadangabe System.Diagnostics.Process.Start(@"C:\WINDOWS\system32\shutdown.exe", par);

hatte ich ja auch schon drin sieht man ja ist auskommentiert. Habe ich geändert da wenn jmd z.b. d:\Windows...... hat würde das Prog doch nicht mehr gehen, oder??

cu
XertoX

18.01.2008 - 14:00 Uhr

Hi bin recht neu hier und muss sagenein Top Forum.
Ich habe grade mit c# angefangen und wollte mein hmm erstes richtiges Prog mal zeigen.
Es handelt sich um ein Shutdowner mit dem man einstellen kann wann der rechner(Abmelden, Herunterfahren, Neustarten) soll. Damit man unter "ausführen nicht immer shutdown -t blablablabla... eingebenmuss.
In dem rar Packet befindet sich die .exe ein .jpeg vom Prog und eine .txt mit dem Code.

Würde gerne eure Meinung dazu hören, ob es bei euch geht, Verbesserungsvorschläge. Also für Anregungen bin ich dankbar(bitte keinen kompletten Code ichmuss das ja selber lernen 😉 )

Bis denn
XertoX

16.09.2007 - 15:13 Uhr

Hi bin neu hier und habe erst vor kuzem mit dem Programmieren angefangen. Habe mich hier auch schon umgeschaut und muss sagen tolle HP. So jetzt zu meinem Problem/Frage.
Ich habe mich rangesetzt mal so nen kleinen Taschenrechner zu coden. So der sieht aber halt so schlicht nach nem Windows Programm aus. Ich habe schon irgentwo gelesen wie man die Schaltflächen zum Minimieren usw. ausblenden kann, aber mich interessiert wie mal das "ganze Aussehen" ändern kann, so wie z.B. bei den Programmen X-fire, ICQ, oder wie bei manchen Key-Genereatoren, die sehen ja auch anders aus. Ich hoffe ihr versteht was ich meine. 😉 Ich habe nur keine Ahnung wonach ich suchen muss um Infos darüber zu finden.
Schon mal Thx für Antworten
Gruß
XertoX