Changeset 2589


Ignore:
Timestamp:
3/30/2012 7:51:53 AM (3 years ago)
Author:
lowjoel
Message:

Save and load XML Task Lists instead for better compatibility between versions.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eraser6/XmlTaskLists/Eraser.Manager/DirectExecutor.cs

    r2543 r2589  
    2727using System.Threading; 
    2828using System.IO; 
    29 using System.Runtime.Serialization; 
    30 using System.Runtime.Serialization.Formatters.Binary; 
    3129 
    3230using Eraser.Util; 
     
    3432using Eraser.Plugins; 
    3533using Eraser.Plugins.ExtensionPoints; 
     34using System.Xml.Serialization; 
    3635 
    3736namespace Eraser.Manager 
     
    468467            { 
    469468                lock (list) 
    470                     new BinaryFormatter().Serialize(stream, list); 
     469                { 
     470                    XmlSerializer serializer = new XmlSerializer(list.GetType()); 
     471                    serializer.Serialize(stream, list); 
     472                } 
    471473            } 
    472474 
     
    474476            { 
    475477                //Load the list into the dictionary 
    476                 StreamingContext context = new StreamingContext( 
    477                     StreamingContextStates.All, Owner); 
    478                 BinaryFormatter formatter = new BinaryFormatter(null, context); 
     478                XmlSerializer serializer = new XmlSerializer(list.GetType()); 
    479479 
    480480                try 
    481481                { 
    482                     List<Task> deserialised = (List<Task>)formatter.Deserialize(stream); 
     482                    List<Task> deserialised = (List<Task>)serializer.Deserialize(stream); 
    483483                    list.AddRange(deserialised); 
    484484 
    485485                    foreach (Task task in deserialised) 
    486486                    { 
     487                        task.Executor = Owner; 
    487488                        Owner.OnTaskAdded(new TaskEventArgs(task)); 
    488489                        if (task.Schedule == Schedule.RunNow) 
     
    492493                    } 
    493494                } 
     495                catch (InvalidOperationException e) 
     496                { 
     497                    throw new InvalidDataException(e.Message, e); 
     498                } 
    494499                catch (FileLoadException e) 
    495                 { 
    496                     throw new InvalidDataException(e.Message, e); 
    497                 } 
    498                 catch (SerializationException e) 
    499500                { 
    500501                    throw new InvalidDataException(e.Message, e); 
Note: See TracChangeset for help on using the changeset viewer.