Plane.Libraries/Plane.Windows/UpdateChecker.cs

47 lines
1.2 KiB
C#
Raw Normal View History

2017-02-27 02:04:13 +08:00
using Plane.Logging;
using System;
using System.Net;
namespace Plane.Windows
{
public class UpdateChecker
{
private ILogger _logger;
public UpdateChecker(string urlToCheckUpdate, ILogger logger)
{
this.Url = urlToCheckUpdate;
_logger = logger;
}
public Version LatestVersion { get; set; }
public string Url { get; set; }
public void CheckAsync(Action<Version> completedCallback)
{
using (var client = new WebClient())
{
client.DownloadStringCompleted += (s, e) =>
{
try
{
if (e.Result.Length > 128)
{
// 这么长,肯定是假的。
return;
}
LatestVersion = Version.Parse(e.Result.Split('_')[0]);
completedCallback?.Invoke(LatestVersion);
}
catch (Exception ex)
{
_logger.Log(ex);
}
};
client.DownloadStringAsync(new Uri(Url));
}
}
}
}