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]

Angular mit ASP.NET Core für .NET-Entwickler

.NET ist Ihnen vertraut, als Entwickler verfügen Sie über einschlägige Kenntnisse. In diesem Kurs lernen Sie nun, Angular in .NET-Umgebungen einzusetzen. Sie verstehen das Konzept von Angular und integrieren das clientseitige JS-Framework sicher in.NET-Anwendungen.

C# Grundlagen

Die Schulung vermittelt Ihnen die Grundlagen von C# in der Arbeit mit Datentypen sowie bei Klassenbibliotheken. Sie lernen, mit Variablen umzugehen und deren verschiedene Formen zu konvertieren. 

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!