Feedback

C# - ISupportInitializeSession

Veröffentlicht von am 20.06.2017
(0 Bewertungen)
Habt ihr euch schon mal in der Situation wiedergefunden, dass ihr bestimmten Code mit einer Begin- und End-Methode umgeben musstet.

var trackBar = new System.Windows.Forms.TrackBar();
trackBar.BeginInit();
trackBar.Minimum = 20;
trackBar.Maximum = 50;
trackBar.Value = 30;
trackBar.EndInit();


Sobald hier eine Exception geworfen wird, wird es umständlich. Wenn nun trotzdem die End-Methode aufgerufen werden soll, dann benötigt man dafür das try-finally-Pattern.

var trackBar = new System.Windows.Forms.TrackBar();
try
{
trackBar = new trackBar.BeginInit();
trackBar.Minimum = 20;
trackBar.Maximum = 50;
trackBar.Value = 30;
throw new System.Exception();
}
finally
{
trackBar.EndInit();
}


C# bietet in dieser Situation mit using und der System.IDisposable-Schnittstelle etwas syntactic sugar an.
Mit Hilfe der Klasse InitSession aus dem Snippet verkürzt sich obiger Code zu

var trackBar = new System.Windows.Forms.TrackBar();
using (var session = new InitSession(trackBar))
{
trackBar.Minimum = 20;
trackBar.Maximum = 50;
trackBar.Value = 30;
throw new System.Exception();
}
GFU-Schulungen  [Anzeige]

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

C# 2017/2015/2013 Grundlagen

Nach Abschluss des Kurses sind Ihnen die Datentypen und Klassenbibliotheken von C# bekannt. Außerdem sind Sie in der Lage, mit Variablen umzugehen und deren Typen zu konvertieren. Sie definieren Namespaces und setzen diese ein, Sie erstellen eigene Klassen  und bauen Trouble Shooting ein.

public class InitSession : System.IDisposable
{
    public InitSession(System.ComponentModel.ISupportInitialize component)
    {
        this.component = component;
        component.BeginInit();
    }

    private readonly System.ComponentModel.ISupportInitialize component;

    public void Dispose()
    {
        component.EndInit();
    }
}
Abgelegt unter using, IDisposable, ISupportInitialize.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!