Adresse einer List an eine Klasse übergeben



  • Hallo Leute,

    ich möchte gerne die Adresse einer List<String^> an eine Klasse übergeben, dort Daten hinein schreiben und später im Hauptthread verarbeiten.

    Mit einem Array bekomme ich das problemlos hin, mit einer List funktioniert das, wenn man es genauso wie beim Array macht, nicht.

    Es gibt keine Fehlermeldung, die Daten werden auch in die Liste in der Klasse geschrieben, aber Liste im Hauptthread bleibt leer.
    Und die Liste wird in der Klasse nicht neu initialisiert.

    Ich habe schon einige Zeit im Netz gesucht, finde aber leider nichts. Möglicherweise suche ich nicht nach den richtigen Schlüsselwörtern?
    Hat jemand ne Idee oder eine Info wo ich nachlesen könnte?

    Vielen Dank.



  • Wie übergibst Du denn?
    So sollte es gehen:

    void Test(List<String^>^ liste);
    


  • Im Hauptthread:

    List<String^>^mainList;
    mainList=gcnew List<String^>();
    

    Übergabe an die Klasse:

    handleForClass->set_ListForClass(mainList);
    

    In der Klasse:
    Die Liste wird nicht erneut initialisiert!

    private:
    List<String^> ^localList;
    
    localList->Add();
    

    Hier in der Klasse kann man die Daten der List einsehen.

    Übergabe für die Klasse:

    void sendClass::set_ListForClass(List<String^>^mainList){localList=mainList;}
    

    Wenn ich parallen die Liste im Hauptthread einsehe, stehen dort keine Daten drin!!
    Wenn ich das gleiche mit einem Array mache, funktioniert das problemlos!!



  • Ich verstehe Dein Problem nicht ganz.
    Wenn Du mit Threads arbeitest, musst Du eh aufpassen, dass Du nicht zur selben Zeit auf die Liste zugreifst! Dies musst Du synchronisieren.

    Das es mit einem Array funktioniert haben soll, kann ich mir nicht vorstellen, da es da nicht mal eine Add-Methode gibt...

    Prinzipiell funktioniert es so; nur musst Du es synchronisieren und woher soll der Hauptthread wissen, dass sich in der Liste etwas geändert hat?


Anmelden zum Antworten