//****************************************************************************************** // 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 } }