TEditXna.ViewModel.WorldViewModel.CheckVersion C# (CSharp) Method

CheckVersion() public method

public CheckVersion ( bool auto = true ) : void
auto bool
return void
        public void CheckVersion(bool auto = true)
        {
            Task.Factory.StartNew<bool?>(() =>
            {
                try
                {
                    using (var Client = new WebClient())
                    {
                        byte[] dl = Client.DownloadData("http://www.binaryconstruct.com/downloads/teditversion.txt");

                        string vers = Encoding.Unicode.GetString(dl);
                        string[] verstrimmed = vers.Split('v');

                        if (verstrimmed.Length != 2) return null;

                        string[] split = verstrimmed[1].Split('.');

                        if (split.Length < 3) return null; // SBLogic -- accept revision part if present

                        int major;
                        int minor;
                        int build;
                        int revis = -1;

                        if (!int.TryParse(split[0], out major)) return null;
                        if (!int.TryParse(split[1], out minor)) return null;
                        if (!int.TryParse(split[2], out build)) return null;
                        if ((split.Length == 4) && (split[3].Length > 0) && (!int.TryParse(split[3], out revis))) return null;

                        if (major > App.Version.ProductMajorPart) return true;
                        if (minor > App.Version.ProductMinorPart) return true;
                        if (build > App.Version.ProductBuildPart) return true;
                        // ignore revision, build should be enough
                        // if ((revis != -1) && (revis > App.Version.ProductPrivatePart)) return true;
                    }
                }
                catch (Exception)
                {
                    return null;
                }
                return false;
            }).ContinueWith(t =>
            {
                bool? isoutofdate = t.Result;

                if (isoutofdate == null)
                {
                    MessageBox.Show("Unable to check version.", "Update Check Failed");
                }
                else if (isoutofdate == true)
                {
                    if (MessageBox.Show("You are using an outdated version of TEdit. Do you wish to download the update?", "Update?", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
                    {
                        try
                        {
                            Process.Start("http://www.binaryconstruct.com/downloads/");
                        }
                        catch { }

                    }
                }
                else
                {
                    if (!auto)
                        MessageBox.Show("TEdit is up to date.", "Update");
                }

            }, TaskFactoryHelper.UiTaskScheduler);
        }