Example #1
0
        private void ThreadWorkProc()
        {
            Exception    resultException          = null;
            UpdateAction updateAction             = UpdateAction.Undefined;
            Version      currentVersion           = null;
            bool         applicationCloseRequired = false;

            // Do the work
            try
            {
                CheckToCancel();

                UpdateApplicationManifest appManifest = GetApplicationManifest();

                CheckToCancel();

                DoStatusCallback(-1, "Determining update actions ...");
                Version existingVersion;
                updateAction   = GetUpdateAction(appManifest, out existingVersion);
                currentVersion = existingVersion;

                if (updateAction == UpdateAction.None)
                {
                    LOG.Debug("ThreadWorkProc: Exiting thread, updateAction == UpdateAction.None");
                }
                else
                {
                    CheckToCancel();
                    LOG.Debug("ThreadWorkProc: Performing {0} from version {1} to version {2}",
                              updateAction.ToString(), (existingVersion == null) ? "Unknown" :
                              existingVersion.ToString(),
                              (appManifest.CurrentDatabaseVersion == null) ? "Not specified" :
                              appManifest.CurrentDatabaseVersion.ToString());

                    if (EnumUtils.IsFlagSet(updateAction, UpdateAction.FullRefresh))
                    {
                        currentVersion = DoFullRefresh(appManifest, out applicationCloseRequired);
                    }
                    if (!applicationCloseRequired && EnumUtils.IsFlagSet(updateAction, UpdateAction.VersionUpdate))
                    {
                        currentVersion = DoVersionUpdate(appManifest, currentVersion, out applicationCloseRequired);
                    }
                }
            }
            catch (Exception e)
            {
                resultException = e;
                LOG.Error("ThreadWorkProc: Failed to run thread", e);
            }

            _isRunning = false;

            DoCompleteCallback(updateAction, currentVersion, applicationCloseRequired, resultException);
        }