Les Snippets

Connexion

Thread-Safe simplement avec SynchronizationContext

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 03/10/2008 16:39:10 et initié par jmenfous [Liste]
Vue : 5613
Catégorie(s) : Class
Langages dispo pour ce code :
- C# 2.x, C# 3.x



Langage : C# 2.x , C# 3.x
Date ajout : 03/10/2008
Posté par jmenfous [Liste]

using System;
using System.Threading;

namespace WindowsFormsApplication1
{
    /// <summary>
    /// Classe métier qui a besoin d'avoir des appels avec SynchronizationContext
    /// </summary>
    public class Class1
    {
        private SynchronizationContext _context;

        /// <summary>
        /// Constructeur
        /// </summary>
        public Class1()
        {
            // Mémorisation du context
            _context = SynchronizationContext.Current;
        }

        /// <summary>
        /// Lancement de la méthode hors context
        /// </summary>
        public void DoWork()
        {
            // Test si on a un context (juste par prudence)
            if (_context != null)
            {
                // Appel de la méthode via le context
                _context.Post(Work, null);
            }
        }

        /// <summary>
        /// Méthode que l'on souhaite proteger via SynchronizationContext
        /// </summary>
        /// <param name="data"></param>
        private void Work(Object data)
        {
            // Faire le job
        }
    }
}

Remarque :
Voici un petit code qui explique simplement l'utilisation du SynchronizationContext pour obtenir un code Thread-safe.

Snippets en rapport avec : Thread, Synchronizationcontext



Codes sources en rapport avec : Thread, Synchronizationcontext

{JAVA / J2EE} FENÊTRE BLOQUANTE
Pour créer une fenêtre d'information avec Swing, tout le monde connait JOptionPane. Cette classe per...

{JAVA / J2EE} JNI: THREAD NATIF & CONTEXTE JAVA
ATTENTION: Avant toute chose, ce code contient plus de code natif que de code java donc si le C vous...

{Visual Basic, VB6, VB.NET, VB 2005} CREER UN GIF ANIMÉ
Ce programme crée un gif animé grâce à la librairie Gif.Components.DLL. Son utilisation est très si...

{C# / C#.NET} AFFICHAGE DE VALEUR PROVENANT D'U THREAD DANS UN FORMULAIRE
Développer sous VS2010 Framework 4.0 Le but cette source est de montrer comment gérer les événem...

{JAVA / J2EE} SERVEUR D'OBJET ET EXEMPLE D UTILISATION : SERVER CHAT ET SON CLIENT
En fait je n ai pas trouver de client/serveur me convenant sur le site ;o) donc j ai fait le mien ;o...

{JAVA / J2EE} MINI SEVEUR HTTP AVEC INTERFACE GRAPHIQUE ET IMPLÉMENTATIONS DES MÉTHODES GET, PUT, HEAD ET DELETE
Le serveur fonctionne sur deux modes soit en MultiThread, Soit en Canaux. De plus, vous pouvez chang...

{Python} SOCKET MULTITHREAD SIMPLE
Voici la base pour créer des sockets multi-clients. Je n'est pas trouvé de source qui proposé dR...

{C / C++ / C++.NET} SOKOBAN EN C POUR DÉBUTANT (VERSION AMÉLIORÉE BASÉE SUR LE TUTORIEL DU SITE DU ZÉRO)
Bonjour, je vous propose ma première source en C. Je débute et me suis basé sur le tutoriel début...

{C / C++ / C++.NET} MINICHAT MULTI-CLIENT
Voila, un mini-chat multithread ,multi client en console, Je poste cet première source, pas pour mon...

{Delphi} CLAVIER ARRANGEUR MIDI VIRTUEL
Bonjour à tous, je débute actuellement au piano, et je vous propose un projet d'apprentissage. Il s'...