Laden...

Wie kann Ich eine ArrayList nach dem Beenden einer Anwendung beibehalten?

Erstellt von omega90 vor 10 Jahren Letzter Beitrag vor 10 Jahren 918 Views
Thema geschlossen
Hinweis von herbivore vor 10 Jahren

vorneweg: ArrayList gehört in die Mottenkiste und sollte wie alle untypisierten Collections aus System.Collections nicht mehr benutzt werden. Verwende stattdessen List<T> und alle anderen typisierten Collections aus System.Collections.Generic.

O
omega90 Themenstarter:in
51 Beiträge seit 2012
vor 10 Jahren
Wie kann Ich eine ArrayList nach dem Beenden einer Anwendung beibehalten?

Hallo Zusammen,

Ich bin gerade dabei ein Tool zu schreiben mit dem Sich eine 8 Stelliger Zufallsstring erzeugen lässt und das funktioniert eben auch. jetzt muss Ich mir aber natürlich gedanken machen wo Ich diesen dcode absichere damit wenn ein neuer Code erzeugt wird nicht der gleiche Code erzeugt werden kann wie zuvor. Das Tool wird später in einem Verzeichnis liegen wo bestimmte Leute zugriff haben und Sich den Code erstellen lassen können. Dieser Code muss immer anderst sein.

Meine Idee:

Wenn Benutzer A das Tool öffnet sieht er eine WinForm Anwendung mit einer TextBox und einem Button Erzeugen. Sobald der Benutzer A auf Erzeugen klickt wird der Code generiert und in der TextBox Angezeigt. Sollte ein Benutzer B zur gleichen Zeit das Tool öffnen bzw einen COde generieren wollen wird eine Meldung ausgegeben das Benutzer A gerade das Tool verwendet. Damit nicht beide zufällig das gleiche haben könnten. Selten aber machbar. Die Erzeugten Codes sollen in einer ArrayList gesichert werden und es muss geprüft werden vor dem Erzeugen ob diese ArrayList bereits diesen Code ernthält. Diese ArrayListe müsste natürlich auch nach dem beenden der Anwendung irgendwie gesichert werden und beim erneuten Aufruf auch wieder aufgerufen werden.

Hier ist mein Code:

private void btn_Create_Click(object sender, EventArgs e)
        {
            string code = GetCode(7);

            code = "2 - " + code;

            txt_Code.Text = code;
            lbl_status.Text = "Code wurde erstellt";

            ArrayList list = new ArrayList();

            list.Add(code);

            //serialize the code from a arraylist
        }
private void DoSerialize(ArrayList list) {

            var serializer = new BinaryFormatter();
            using (var stream = File.OpenWrite("code.dat"))
            {
                serializer.Serialize(stream, list);
            }
        }

        private ArrayList DoDeserialize() {

            var serializer = new BinaryFormatter();

            using (var stream = File.OpenRead("code.dat"))
            {
                 ArrayList list; 

                 return list = (ArrayList)serializer.Deserialize(stream);
            }
        }

Gruß W.T 🙂

S
80 Beiträge seit 2012
vor 10 Jahren

Wäre es nicht einfacher GUIDs zu verwenden, dort hast die Gewissheit, dass die GUID zu 99.999999999999% nicht wieder erzeugt wird.

Einen ArrayList, hier würde ich lieber eine List vom Type String verwenden, zu serialisieren und dann wieder deserialisieren, wäre nicht so toll, zudem du einfache Textdateien verwenden kannst bzw. eine CSV oder eine INI Datei. CSV wäre praktischer, denn die kannst du formatiert im OpenOffice oder Excel anschauen. Auch eine Unterteilung (Spalten + Zeilen) ist auch darüber hinaus viel angenehmer.

Wenn du also die Klasse GUID verwendest, so kannst du dir auch sicher sein, dass kein anderer den gleichen String hat und brauchst auch keinen XLocker in deinem Programm einzubauen.

----ehm............

Hinweis von gfoidl vor 10 Jahren

Wegen [Hinweis] Wie poste ich richtig? Punkt 2.2 ==> geschlossen
c# - How I can work with a ArrayList and Serialize?

Thema geschlossen