Avatar billede spif2001 Nybegynder
03. november 2005 - 09:38 Der er 8 kommentarer og
1 løsning

Bliver FlieStreams lukket?

Har følgende metode, der loader filer ind i hukommelsen, som jeg senere sender over en TCP forbindelse.

public Hashtable LoadFiles(string pdaName, out long totalSize)
{
    long size = 0;
    string[] fileNameList = Directory.GetFiles(directoryName + pdaName);           
    FileStream fs;   
    Hashtable toReturn = new Hashtable();
    foreach(string file in fileNameList)
    {
        if(file.IndexOf(agroSyncTxtFile) < 0)
        {
            if(file.Length > 60)
                throw new Exception("Found file name longer than 60 characters. Name found: " + file);
            fs = new FileStream(file,FileMode.Open,FileAccess.Read,FileShare.Read);
            size += fs.Length;
            toReturn.Add(file.Substring(file.LastIndexOf(@"\")+1),fs);
        }//if
    }//foreach
    totalSize = size;
    return toReturn;
}//LoadFiles

Hvis metoden kaster en exception, fanger jeg den i metoden der kalder denne metode.

Spørgsmål: Hvis en exception bliver kaldt, slipper mine FileStreams så filerne? Hashtabellen med FileStreams i ryger jo "out of scope" og så bliver FileStream objekterne vel nedlagt?

Vil være sikker, da en anden applikation også har sine fedtede fingre i samme filer, og ikke gerne skulle få File access violations, fordi jeg aldrig får filerne sluppet når jeg får en exception.

TIA
-spif2001
Avatar billede arne_v Ekspert
03. november 2005 - 09:49 #1
filerne bliver lukket når programmet lukker

filerne bliver også lukket ved GC

men der kan gå lang tid før GC hvis der er memory nok

så derfor bør du absolut lukke eksplicit når du catcher en exception
(eller bruge C# using syntaxen)
Avatar billede spif2001 Nybegynder
03. november 2005 - 09:50 #2
GC?

C# using syntaxen?
Avatar billede spif2001 Nybegynder
03. november 2005 - 09:51 #3
ah garbage collector
Avatar billede arne_v Ekspert
03. november 2005 - 09:51 #4
ja
Avatar billede spif2001 Nybegynder
03. november 2005 - 09:51 #5
men  C# using syntaxen?
Avatar billede arne_v Ekspert
03. november 2005 - 09:54 #7
jeg synes iøvrigt ikke at det er en speciel pæn tilføjelse til sproget, men
den var da relevant at nævne her
Avatar billede spif2001 Nybegynder
03. november 2005 - 09:56 #8
ja det kan jeg se, men tror nu jeg snupper en try,catch,finally - om ikke andet så for at beholde kontinuiteten i koden.
Takker - smid et svar...
Avatar billede arne_v Ekspert
03. november 2005 - 09:57 #9
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester