From 1cb893b94bc5128e7e93c1c3c827bba65f70d699 Mon Sep 17 00:00:00 2001 From: Leonardo Robol Date: Thu, 11 Feb 2010 21:17:41 +0100 Subject: [PATCH] =?UTF-8?q?La=20gestione=20dei=20task=20=C3=A8=20ora=20pi?= =?UTF-8?q?=C3=B9=20sicura=20(usa=20GUID=20per=20evitare=20doppioni=20nel?= =?UTF-8?q?=20caso=20di=20file=20con=20nome=20uguale=20e=20fa=20il=20clean?= =?UTF-8?q?up=20quando=20le=20cose=20si=20sono=20sistemato=20->=20niente?= =?UTF-8?q?=20pi=C3=B9=20memory=20leak).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dizzy/EventManager.cs | 19 ++++++++++++------- Dizzy/FileTransfer.cs | 9 +++++++-- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/Dizzy/EventManager.cs b/Dizzy/EventManager.cs index 703f821..b71aeda 100644 --- a/Dizzy/EventManager.cs +++ b/Dizzy/EventManager.cs @@ -140,12 +140,12 @@ namespace Dizzy }); } - public static void TaskTreeViewAddTask (string filename, int perc) + public static void TaskTreeViewAddTask (string filename, int perc, string GUID) { if (taskTreeView == null) return; GLib.Idle.Add (delegate { - EventManager.AddIter(filename, taskTreeView.AddTask (filename, perc)); + EventManager.AddIter(GUID, taskTreeView.AddTask (filename, perc)); return false; }); @@ -171,21 +171,26 @@ namespace Dizzy }); } - public static void AddIter (string filename, TreeIter iter) + public static void AddIter (string GUID, TreeIter iter) { - iters.Add(filename, iter); + iters.Add(GUID, iter); } - public static TreeIter GetIter (string filename) + public static TreeIter GetIter (string GUID) { - try {return iters[filename];} + TreeIter ret; + try { + ret = iters[GUID]; + iters.Remove (GUID); + return ret; + } catch (Exception e) { // Aspettiamo nella speranza che le cose vadano meglio Log.Warning ("Sto richiamando GetIter () per ottenre l'iter (" + e.Message + ")"); System.Threading.Thread.Sleep(200); } - return GetIter(filename); + return GetIter(GUID); } } diff --git a/Dizzy/FileTransfer.cs b/Dizzy/FileTransfer.cs index 2f55cd9..bb24a5b 100644 --- a/Dizzy/FileTransfer.cs +++ b/Dizzy/FileTransfer.cs @@ -17,6 +17,10 @@ namespace Dizzy // L'etichetta da mettere sul trasferimento protected string label; + // Un Globally Unique identifier che identifichi il nostro + // trasferimento + protected string GUID; + public delegate void Handler(string src, string dest, int transferredBytes, int totalBytes, string message); @@ -52,8 +56,9 @@ namespace Dizzy public void OnTransferStarted (string src, string dest, int transferredBytes, int totalBytes, string message) { - EventManager.TaskTreeViewAddTask (label, 0); - this.iter = EventManager.GetIter (label); + GUID = System.Guid.NewGuid().ToString(); + EventManager.TaskTreeViewAddTask (label, 0, GUID); + this.iter = EventManager.GetIter (GUID); } public void OnTransferProgress(string src, string dest, int transferredBytes, -- 2.1.4