FileInfo::OpenText()



  • Hi zusammen!

    Kurze Frage zu dieser Memberfunktion. Die liefert ja einen Handle auf einen StreamReader zurück. Die sollten ja bekanntlich auch wieder geschlossen werden.

    Ich bin aber nun einer der seinen Code immer gern kurz hält und wollte gern folgendes schreiben:

    String^ text = fileInfo->OpenText()->ReadToEnd();
    

    Nun ha ich hier aber das Problem daß ich das Handle auf den StreamReader nicht zwischenspeichere und so auch keine Möglichkeit habe den StreamReader wieder zu schließen. Gibt das Probleme oder sind Mechanismen vorhanden die das automatisch erledigen?

    Oder muß ich hierbei wohl oder übel den Code aufblähen und folgendes schreiben?

    StreamReader^ sr = fileInfo->OpenText();
    String^ text = sr->ReadToEnd();
    sr->Close();
    


  • Hallo,

    es sind die "üblichen" Mechanismen, die auch hier greifen würden: auf das StreamReader-Objekt besteht nach ReadToEnd keine Referenz mehr, der GC würde das Objekt "bei Gelegenheit" abräumen und damit schliessen. Man sollte aber die von dir beschriebene "lange" Variante bevorzugen, weil das andere einfach zu "undeterministisch" ist.

    MfG,

    Probe-Nutzer


Log in to reply