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]

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

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!