/// <summary>
 /// Rimuove tutti i task che corrispondono alle condizioni definite dal predicato specificato.
 /// </summary>
 /// <param name="match">delegato che definisce le condizioni dei task da rimuovere</param>
 public void RemoveUserTasks(FilterTaskMetadata match)
 {
     lock (m_PendingTasksLocker)
     {
         m_PendingTasks.RemoveTasks(match);
     }
 }
        /// <summary>
        /// Rimuove tutti i task che corrispondono alle condizioni definite dal predicato specificato.
        /// </summary>
        /// <param name="match">delegato che definisce le condizioni dei task da rimuovere</param>
        /// <remarks>
        /// Si tenga presente che l'oggetto contenente i metadati di un task può essere null.
        /// </remarks>
        public void RemoveTasks(FilterTaskMetadata match)
        {
            if (match != null)
            {
                List <String> tasksToRemove = new List <String>();

                foreach (KeyValuePair <String, TaskMetadata> item in m_Data)
                {
                    String       id = item.Key;
                    TaskMetadata tm = item.Value;

                    if (match(tm))
                    {
                        tasksToRemove.Add(id);
                    }
                }

                foreach (var id in tasksToRemove)
                {
                    m_Data.Remove(id);
                }
            }
        }
 /// <summary>
 /// Rimuove tutti i task che corrispondono alle condizioni definite dal predicato specificato.
 /// </summary>
 /// <param name="match">delegato che definisce le condizioni dei task da rimuovere</param>
 public void RemoveUserTasks(FilterTaskMetadata match)
 {
     lock (m_PendingTasksLocker)
     {
         m_PendingTasks.RemoveTasks(match);
     }
 }