Quantcast
Channel: Task Scheduler Managed Wrapper
Viewing all articles
Browse latest Browse all 2206

Closed Unassigned: Supports serialization to XML for 1.0 tasks [12309]

$
0
0
Hello,

I need to support first version of task and use serialization to save task data. I catch an exception "Value cannot be null." when try to create task with daily trigger from saved data.
Code to reproduce:
```
using (TaskService ts = new TaskService(null, null, null, null, true))
{
TaskDefinition td = ts.NewTask();
td.Triggers.Add(new DailyTrigger(1));
td.Actions.Add(new ExecAction("notepad.exe"));
const string taskName = "Test";
ts.RootFolder.RegisterTaskDefinition(taskName, td);
Task t = ts.GetTask(taskName);
var xmlData = t.Xml;
ts.RootFolder.DeleteTask(taskName);

TaskDefinition newtd = ts.NewTask();

//exception here
newtd.XmlText = xmlData;
ts.RootFolder.RegisterTaskDefinition("Test", newtd);
}
```
Exception: Value cannot be null. Parameter name: unboundTrigger
StackTrace
```
at Microsoft.Win32.TaskScheduler.TriggerCollection.Add(Trigger unboundTrigger)
at Microsoft.Win32.TaskScheduler.TriggerCollection.System.Xml.Serialization.IXmlSerializable.ReadXml(XmlReader reader)
at Microsoft.Win32.TaskScheduler.XmlSerializationHelper.ReadObject(XmlReader reader, Object obj, PropertyConversionHandler handler)
at Microsoft.Win32.TaskScheduler.XmlSerializationHelper.ReadObjectProperties(XmlReader reader, Object obj, PropertyConversionHandler handler)
at Microsoft.Win32.TaskScheduler.TaskDefinition.System.Xml.Serialization.IXmlSerializable.ReadXml(XmlReader reader)
at Microsoft.Win32.TaskScheduler.XmlSerializationHelper.ReadObject(XmlReader reader, Object obj, PropertyConversionHandler handler)
at Microsoft.Win32.TaskScheduler.XmlSerializationHelper.ReadObjectFromXmlText(String xml, Object obj, PropertyConversionHandler handler)
at Microsoft.Win32.TaskScheduler.TaskDefinition.set_XmlText(String value)
at WinSheduleTest.Program.Main(String[] args) in c:\Users\AKolpako\Documents\Visual Studio 2013\Projects\WinSheduleTest\WinSheduleTest\Program.cs:line 31
```
The error occurs only for Daily Triggers with 1 day interval.
I guess the cause is here:
```
public sealed class DailyTrigger : Trigger, ICalendarTrigger, ITriggerDelay, IXmlSerializable
{
... void WriteMyXml(System.Xml.XmlWriter writer)
{
if (this.DaysInterval != 1)
{
writer.WriteStartElement("ScheduleByDay");
writer.WriteElementString("DaysInterval", this.DaysInterval.ToString());
writer.WriteEndElement();
}
}
...
}
```
I use old version of library - 2.3. Last version do not solved the issue and throw an additional exception:
```
Exception Exception has been thrown by the target of an invocation.
InnerException: This property cannot be set on an unregistered task
StackTrace:
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, Object[] index)
at Microsoft.Win32.TaskScheduler.XmlSerializationHelper.ReadObjectProperties(XmlReader reader, Object obj, PropertyConversionHandler handler)
at Microsoft.Win32.TaskScheduler.TaskRegistrationInfo.System.Xml.Serialization.IXmlSerializable.ReadXml(XmlReader reader)
at Microsoft.Win32.TaskScheduler.XmlSerializationHelper.ReadObject(XmlReader reader, Object obj, PropertyConversionHandler handler)
at Microsoft.Win32.TaskScheduler.XmlSerializationHelper.ReadObjectProperties(XmlReader reader, Object obj, PropertyConversionHandler handler)
at Microsoft.Win32.TaskScheduler.TaskDefinition.System.Xml.Serialization.IXmlSerializable.ReadXml(XmlReader reader)
at Microsoft.Win32.TaskScheduler.XmlSerializationHelper.ReadObject(XmlReader reader, Object obj, PropertyConversionHandler handler)
at Microsoft.Win32.TaskScheduler.XmlSerializationHelper.ReadObjectFromXmlText(String xml, Object obj, PropertyConversionHandler handler)
at Microsoft.Win32.TaskScheduler.TaskDefinition.set_XmlText(String value)
at WinSheduleTest.Program.Main(String[] args) in ...
```
Comments: Fixed in 2.5.8. Thanks for identifying the problem and the fix!

Viewing all articles
Browse latest Browse all 2206

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>