private void ExecuteSolution() { if (!RegistrateSolutionExecuting()) { return; } InitSolutionDomain(); DateTime startTime = DateTime.Now; try { solutionDomain.ExecuteAssembly(solutionExecutiveFileName); Log.Append("Executed - OK"); } catch (ThreadAbortException abortExp) { Log.Append("Executing ThreadAbortException - " + abortExp.Message); App.Stop(); return; } catch (Exception exp) { Log.Append("Executing exception - " + exp.Message); executionError = string.Format("ExecuteAssembly error: {0}", exp.Message); Trace.WriteLine(executionError); string fileName = Path.GetDirectoryName(SolutionUpdater.STARTER_PATH) + "\\" + "lastError.txt"; try { File.WriteAllText(fileName, exp.Message + "\r\n" + exp.StackTrace); } catch { } if (ExecutingTimeUnreallySmall(startTime)) { SolutionUpdater.ResetVersion(); // tell to updater to updateVersion return; } } while (solutionDomain.GetData(EXIT_STATUS_VAR_NAME) == null) { Thread.Sleep(WAIT_FOR_THREADS_COMPLATING_INTERVAL_MILLISEC); } //GC.WaitForPendingFinalizers(); //GC.Collect(); //GC.WaitForPendingFinalizers(); //object exitForUpdateObj = solutionDomain.GetData(UPDATE_MODE_VAR_NAME); //object forsedUpdateObj = solutionDomain.GetData(FORSED_UPDATE_VAR_NAME); //try // { // Log.Append("before domain unload"); // AppDomain.Unload(solutionDomain); // Log.Append("domain unloaded"); // } //catch // { // Log.Append("error domain unloaded"); // return false; // } //solutionDomain = null; //GC.Collect(); //GC.WaitForPendingFinalizers(); //RegistrateSolutionExit(); //Log.Append("RegistrateSolutionExit() solutionExecuting = " + solutionExecuting.ToString()); //exitForUpdate = (exitForUpdateObj != null) && (exitForUpdateObj is bool) && (bool)exitForUpdateObj; //forsedUpdate = (forsedUpdateObj != null) && (forsedUpdateObj is bool) && (bool)forsedUpdateObj; //Log.Append("exit ExecuteSolution"); //return true; }
private void Button_Click_1(object sender, RoutedEventArgs e) { SolutionUpdater.ResetVersion(); }