client/src/Iri.Modernisation.Data/Models/Sync.cs
changeset 36 b6df6fce6e5d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/client/src/Iri.Modernisation.Data/Models/Sync.cs	Wed Jan 27 10:37:39 2010 +0100
@@ -0,0 +1,54 @@
+using System;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Shapes;
+
+namespace Iri.Modernisation.Data.Models
+{
+    /// <summary>
+    /// Classe servant à synchroniser les Loaders
+    /// On créé la classe, on enregistre les Loader a synchroniser.
+    /// /* Utilisation */
+    /// Attention /!\ Il faut enregistrer le loader APRES s'êtres abonnée à son event LoaderFinished.
+    /// </summary>
+    public class Sync
+    {
+        /// <summary>
+        /// Constructeur par défaut
+        /// </summary>
+        public Sync()
+        { _registeredLoader = 0; }
+        private int _registeredLoader { get; set; }
+
+        /// <summary>
+        /// Méthode permettant d'enregistrer les Loader au sein d'un même Sync
+        /// </summary>
+        /// <param name="loader">Loader à enregistrer</param>
+        public void RegisterLoader(ILoader loader)
+        {
+            _registeredLoader++;
+            loader.LoaderFinished += new EventHandler<EventArgs>(loader_LoaderFinished);
+        }
+
+        private void loader_LoaderFinished(object sender, EventArgs e)
+        {
+            _registeredLoader--;
+            if (_registeredLoader == 0)
+            {
+                Completed(this, new EventArgs());
+            }
+        }
+      
+        /// <summary>
+        /// Evenement déclanché une fois tous les Loader fini
+        /// </summary>
+        public event EventHandler<EventArgs> Completed;
+
+    }
+}