[C#] Méthode SynchronizationContext.Post() + arguments + retour

Contenu du snippet

/// Classe utiliséé pour passer les arguements et retourner une valeur
public class ClassData
{
   public Boolean Retour{get;set;}
   public String Argument1{get;set;}
   public String Argument2{get;set;}
} 
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 Boolean DoWork()
    {
        // Test si on a un context (juste par prudence)
        if (_context != null)
        {
            ClassData data = new ClassData();
            // Appel de la méthode via le context
            _context.Post(Work, data);
            return data.Retour;
        }
    }

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



Compatibilité : C# 3.x

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.