Feedback

C# - Threadsicherer Codeaufruf im Control-Kontext (Invoking)

Veröffentlicht von am 10.07.2009
(4 Bewertungen)
Diese Extension-Methode ermöglicht das Ausführen von Anweisungen im Kontext eines Controls mit Hilfe von InvokeRequired.

Hierdurch können Eigenschaften threadsicher zugewiesen, bzw. Methoden ausgeführt werden.
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.

Visual Studio Team Foundation Server 2017/2015 (TFS) für Entwickler - Kompakt

Nach Teilnahme an dieser Schulung kennen Sie alle wesentlichen Funktionen des TFS für Entwickler. Sie setzen Software-Entwicklung mit dem Visual Studio Team Foundation Server erfolgreich um.

public static void ExecuteThreadSafe(this Control control, Action action)
{
    if (control.InvokeRequired)
    {
        control.Invoke(action);
    }
    else
    {
        action.Invoke();
    }
}


//Beispiel:
comboBox.ExecuteThreadSafe(() => comboBox.Enabled = true);

comboBox.ExecuteThreadSafe(() =>
{
    comboBox.Enabled = true;
    comboBox.Items.Add("Threadsicheres");
    comboBox.Items.Add("hinzufügen");
    comboBox.Items.Add("von");
    comboBox.Items.Add("Items");
});

6 Kommentare zum Snippet

Günther Foidl schrieb am 14.07.2009:
Sehr praktisch.
Kennst du auch SynchronizationContext und/oder AsyncOperation?
Marcell Spies schrieb am 14.07.2009:
Also die Async-Operationen mit IAsyncResult kenne ich. Mit dem SynchronizationContext habe ich bisher noch nicht gearbeitet.
Günther Foidl schrieb am 14.07.2009:
[quote]Async-Operationen mit IAsyncResult[/quote] Nein, ich meine die AsyncOperation aus System.ComponentModel. Siehe hierzu: http://www.codeproject.com/KB/cpp/SyncContextTutorial.aspx
Rainer Hilmer schrieb am 15.07.2009:
Einen dreiteiligen Artikel zum SynchronizationContext gibt es hier:
http://www.codeproject.com/KB/threads/SynchronizationContext.aspx
http://www.codeproject.com/KB/threads/SynchronizationContext2.aspx
http://www.codeproject.com/KB/threads/SynchronizationContext3.aspx
Er behandelt das Thema ausführlich und beinhaltet praktische Beispiele.
Marcell Spies schrieb am 15.07.2009:
Ah, super, vielen Dank für die vielen Infos.
Bei Gelegenheit werde ich mir das mal alles anschauen.
Rainer Hilmer schrieb am 03.09.2009:
Aus aktullem Anlass habe ich mir erlaubt, eine kleine Beispielanwendung für Anfänger zu basteln.
http://dotnet-forum.de/forums/p/1772/6435.aspx#6435
 

Logge dich ein, um hier zu kommentieren!