Autor Beitrag
Felix2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 124



BeitragVerfasst: Fr 27.05.11 11:14 
Hallo !

Ich bin wie gesagt neu im Bereich C Sharp und würde gerne wissen, wann genau eine Using Funktion wirklich Sinn ergibt. Ich habe diese in einem Programm gefunden, dass wie gesagt nicht von mir selbst geschrieben wurde. Hier der C Sharp Code:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
using (StreamWriter writer = new StreamWriter(currentPath_Readed_Values_ISD_Q + "ISD_Q.txt"))
{

    string strCurrentValue = String.Empty;
  
    foreach (ISfact isfact in parsedin.mySEArray)
    {
  
        if (isfact != null)
        {
    
           strCurrentValue = isfact.Institution.ToString().Trim() + "|";
                                                           
           writer.WriteLine(strCurrentValue);
        }

    }
                 
}


Danke für die Hilfe !

Grüße
Felix
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 27.05.11 11:26 
Immer dann wenn es Resourcen gibt (insbesondere unmanaged Systemressourcen) die deterministisch (also vom Entwickler steuerbar zu einem bestimmten Zeitpunkt im Code) freigegeben werden müssen. Dazu gibt es die Dispose Methode solcher Klassen die man aufrufen kann. Der using Block soll sicherstellen das das auch garantiert erfolgt. Man könnte die aber auch selber aufrufen und denn garantierten Aufruf durch einen try..finally Block sicherstelen. In deinem Beispiel ist der sing Block zum Beispiel sehr wichtig. Der Streamwriter hält eine File das gezielt auch wieder freigegeben werden sollte. Ansonsten könntest du nicht vorhersagen wann im folgenden dieses File wieder frei verfügbar wäre und folgende Zugriffe auf die Datei wieder gefahrlos möglich sind.

Die Hilfe zu diesem Thema ist übrigens in diesem Fall auch hilfreich ;)
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 27.05.11 11:27 
Kurz gesagt: Using macht immer dann Sinn, wenn Du eine Isntanz einer Klasse benutzt, welche das IDisposable-Interface implementiert, bei der also direkt nach der Verwendung (und nicht irgendwann) nach Resourcen freigegeben werden müssen.

In Deinem Fall will man z.B., dass die Datei, in die geschrieben wird, direkt nach dem Schreiben freigegeben wird (und auch sämtliche Puffer da rein geschrieben werden).

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".