fix possible crash (?) due to DateTime format

This commit is contained in:
Paddy Xu
2018-02-18 19:07:44 +02:00
parent 354bbfc1ca
commit a20b4714ec
2 changed files with 30 additions and 6 deletions

View File

@@ -64,10 +64,17 @@ namespace QuickLook.Common.Helpers
private static T GetSettingFromXml<T>(XmlDocument doc, string id, T failsafe)
{
var v = doc.SelectSingleNode($@"/Settings/{id}");
var result = v == null ? failsafe : (T) Convert.ChangeType(v.InnerText, typeof(T));
try
{
var result = v == null ? failsafe : (T) Convert.ChangeType(v.InnerText, typeof(T));
return result;
}
catch (Exception)
{
return failsafe;
}
}
private static void WriteSettingToXml(XmlDocument doc, string id, object value)
{
@@ -81,7 +88,7 @@ namespace QuickLook.Common.Helpers
{
var node = doc.CreateNode(XmlNodeType.Element, id, doc.NamespaceURI);
node.InnerText = value.ToString();
doc.SelectSingleNode(@"/Settings").AppendChild(node);
doc.SelectSingleNode(@"/Settings")?.AppendChild(node);
}
doc.Save(new Uri(doc.BaseURI).LocalPath);
@@ -97,7 +104,22 @@ namespace QuickLook.Common.Helpers
CreateNewConfig(file);
var doc = new XmlDocument();
try
{
doc.Load(file);
}
catch (XmlException)
{
CreateNewConfig(file);
doc.Load(file);
}
if (doc.SelectSingleNode(@"/Settings") == null)
{
CreateNewConfig(file);
doc.Load(file);
}
FileCache.Add(file, doc);
return doc;
}
@@ -110,6 +132,8 @@ namespace QuickLook.Common.Helpers
writer.WriteStartElement("Settings");
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Flush();
}
}
}

View File

@@ -88,11 +88,11 @@ namespace QuickLook
private void CheckUpdate()
{
if (DateTime.Now - SettingHelper.Get<DateTime>("LastUpdate") < TimeSpan.FromDays(7))
if (DateTime.Now.Ticks - SettingHelper.Get<long>("LastUpdateTicks") < TimeSpan.FromDays(7).Ticks)
return;
Task.Delay(120 * 1000).ContinueWith(_ => Updater.CheckForUpdates(true));
SettingHelper.Set("LastUpdate", DateTime.Now);
SettingHelper.Set("LastUpdateTicks", DateTime.Now.Ticks);
}
private void RemoteCallShowPreview(StartupEventArgs e)