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); }