//******************************************************************************************
// D'ORSI Vincent le 27/01/2014 V1.0
/*
* Log Update :
* 1.00 - 27/01/2014 - Vincent D'ORSI :
* => Version initiale
* */
//******************************************************************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace SyncEvents
{
///
/// Cette classe permet de synchroniser les threads entre eux.
/// Une aide pour la communication inter-thread : http://msdn.microsoft.com/fr-fr/library/yy12yx1f(v=vs.90).aspx
///
public class CSyncEvents
{
#region Variables
/*===============================================================
Déclaration des événements de synchronisation de Threads
===============================================================*/
private EventWaitHandle _exitThreadEvent;
private EventWaitHandle _newItemEvent;
/*===============================================================
Encapsulation des ressources partagées
===============================================================*/
private WaitHandle[] _eventArray;
#endregion
#region Propriétés
/// Propriété signalant que le thread parent souhaite stopper les threads enfants.
public EventWaitHandle ExitThreadEvent
{
get { return _exitThreadEvent; }
}
/// Propriété signalant qu'un nouvel item a été ajouté.
public EventWaitHandle NewItemEvent
{
get { return _newItemEvent; }
}
/// Propriété retournant le tableau des événements.
public WaitHandle[] EventArray
{
get { return _eventArray; }
}
#endregion
#region Constructeurs, destructeurs et événements
/*##############################################################################
# CSyncEvents
##############################################################################*/
///
/// Constructeur de la classe
///
public CSyncEvents()
{
_exitThreadEvent = new ManualResetEvent(false);
_newItemEvent = new AutoResetEvent(false);
_eventArray = new WaitHandle[2];
_eventArray[0] = _exitThreadEvent;
_eventArray[1] = _newItemEvent;
}
#endregion
}
}