Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1562 | Anzahl registrierter User: 1893 | Besucher online: 217
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Threadsicherer Codeaufruf im Control-Kontext (Invoking)


Autor: Marcell Spies
Sprache: C#
Bewertung:
6.85 (3 votes)
Anzahl der Aufrufe: 16584
  
Kick it on dotnet-kicks.de  

Beschreibung:

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.


Abgelegt unter: threadsafe, threadsicher, invoke, invoking, thread, invokerequired, extension, extensionmethode, delegate, action, lambda.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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");
});
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Günther Foidl schrieb am:  14.07.2009 11:11:48

Sehr praktisch.
Kennst du auch SynchronizationContext und/oder AsyncOperation?
Marcell Spies schrieb am:  14.07.2009 16:51:02

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 19:04:24

[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 10:31:35

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 17:24:54

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 12:31:50

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


Diese Snippets könnten für Sie interessant sein:
[C#] Threadsicheres Zuweisen von Control-Eigenschaften
[C#] Asynchrones nachladen von Bildern in DataGridView
[C#] Control aus anderen Threads aktualisieren
[C#] Singleton Basisklasse (thread-safe, generic, Lazy Creation)
[C#] Invoke Beispiel mittels Erweiterungs Methoden.
[C#] Generischer Invoker für Windows Form Controls
[C#] Threadsichere GUI Änderungen
[C#] Threadsichere und generische Kommunikation Windows Forms
[C#] Events aus Worker-Thread im GUI-Thread werfen! Kein Invoke!
[C#] DelayedEventHandler
[C#] Aktuelles Verzeichnis auslesen
[C#] Thread nach Timeout beenden
[VB.NET] CPU Last von mehreren CPUs überwachen
[C#] CPU Last von mehreren CPUs überwachen
[C#] Methode mit Parameter in eigenem Thread starten
[C#] Die Ausführungszeit einer Methode einschränken
[VB.NET] Hängende Processe beenden
[C#] Parallelisierung von Schleifen
[C#] CallAndWait
[C#] Datei/Ordner durch Erweiterungsmethoden abfragen
[C#] Programmpfad mittels Erweiterung ermitteln
[C#] DateTime Extensions liefern TimeStamp
[C#] Komplette Exception Message (inkl. InnerExceptions) ausgeben
[VB.NET] Programmpfad mittels Erweiterung ermitteln in VB
[C#] LINQ-Erweiterung für eindeutige Liste
[C#] Type Color serialisieren und deserialisieren
[C#] Controls gleichen Typs von einem Container in Winform holen
[C#] Extension in einem Dateinamen/Pfad ändern
[C#] Selektieren eines gekapselten Eintrags aus der ComboBox
[C#] Color Extension-Methods
[C#] IsNull and IsNullOrEmpty Extension-Methods become Lazy
[C#] Enum-Extension - Flag in einem Bitfeld gesetzt?
[C#] Anzahl der Monate zwischen 2 DateTime-Objekten (Extension)
[C#] "for" mal anders
[C#] Generische Event Args -> EventArgs
[C#] Lazy Serialization-Extensions including Compression
[C#] SystemIconsImageListWrapper
[C#] Wie ToString() welche mit null-Strings umgehen kann
[C#] Delegate (Events)
[C#] Event über Property verfügbar machen
[C#] Render MVC Action as string
[C++] Lambda expressions
[C#] ListView Gruppen aus Enum erzeugen
[C#] Buchstaben zählen

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.