Changeset 791


Ignore:
Timestamp:
12/11/08 13:11:55 (6 years ago)
Author:
lowjoel
Message:

Don't place the Eraser Executor instance in a Using block in the program initialisation code for GUI: the function is meant to be exited for the application to start running. Instead, clean up during the exit phase of the program's lifetime. This fixes a regression when moving to the single instance application model.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eraser6/Eraser/Program.cs

    r790 r791  
    149149        { 
    150150            GUIProgram program = (GUIProgram)sender; 
    151             using (eraserClient = new RemoteExecutorServer()) 
    152             { 
    153                 //Set our UI language 
    154                 EraserSettings settings = new EraserSettings(); 
    155                 System.Threading.Thread.CurrentThread.CurrentUICulture = 
    156                     new CultureInfo(settings.Language); 
    157                 program.SafeTopLevelCaptionFormat = S._("Eraser"); 
    158  
    159                 //Load the task list 
    160                 if (settings.TaskList != null) 
    161                     using (MemoryStream stream = new MemoryStream(settings.TaskList)) 
    162                         try 
    163                         { 
    164                             eraserClient.LoadTaskList(stream); 
    165                         } 
    166                         catch (Exception) 
    167                         { 
    168                             settings.TaskList = null; 
    169                             MessageBox.Show(S._("Could not load task list. All task entries have " + 
    170                                 "been lost."), S._("Eraser"), MessageBoxButtons.OK, 
    171                                 MessageBoxIcon.Error); 
    172                         } 
    173  
    174                 //Create the main form 
    175                 program.MainForm = new MainForm(); 
    176                 program.MainForm.CreateControl(); 
    177                 bool showMainForm = true; 
    178                 foreach (string param in program.CommandLine) 
    179                 { 
    180                     //Run tasks which are meant to be run on restart 
    181                     switch (param) 
     151            eraserClient = new RemoteExecutorServer(); 
     152 
     153            //Set our UI language 
     154            EraserSettings settings = new EraserSettings(); 
     155            System.Threading.Thread.CurrentThread.CurrentUICulture = 
     156                new CultureInfo(settings.Language); 
     157            program.SafeTopLevelCaptionFormat = S._("Eraser"); 
     158 
     159            //Load the task list 
     160            if (settings.TaskList != null) 
     161                using (MemoryStream stream = new MemoryStream(settings.TaskList)) 
     162                    try 
    182163                    { 
    183                         case "--atRestart": 
    184                             eraserClient.QueueRestartTasks(); 
    185                             goto case "--quiet"; 
    186  
    187                         //Hide the main form if the user specified the quiet command 
    188                         //line 
    189                         case "--quiet": 
    190                             showMainForm = false; 
    191                             break; 
     164                        eraserClient.LoadTaskList(stream); 
    192165                    } 
    193                 } 
    194  
    195                 //Run the eraser client. 
    196                 eraserClient.Run(); 
    197                 return showMainForm; 
    198             } 
     166                    catch (Exception) 
     167                    { 
     168                        settings.TaskList = null; 
     169                        MessageBox.Show(S._("Could not load task list. All task entries have " + 
     170                            "been lost."), S._("Eraser"), MessageBoxButtons.OK, 
     171                            MessageBoxIcon.Error); 
     172                    } 
     173 
     174            //Create the main form 
     175            program.MainForm = new MainForm(); 
     176            program.MainForm.CreateControl(); 
     177            bool showMainForm = true; 
     178            foreach (string param in program.CommandLine) 
     179            { 
     180                //Run tasks which are meant to be run on restart 
     181                switch (param) 
     182                { 
     183                    case "--atRestart": 
     184                        eraserClient.QueueRestartTasks(); 
     185                        goto case "--quiet"; 
     186 
     187                    //Hide the main form if the user specified the quiet command 
     188                    //line 
     189                    case "--quiet": 
     190                        showMainForm = false; 
     191                        break; 
     192                } 
     193            } 
     194 
     195            //Run the eraser client. 
     196            eraserClient.Run(); 
     197            return showMainForm; 
    199198        } 
    200199 
     
    233232                settings.TaskList = stream.ToArray(); 
    234233            } 
     234 
     235            //Dispose the eraser executor instance 
     236            eraserClient.Dispose(); 
    235237        } 
    236238 
     
    300302                finally 
    301303                { 
     304                    //Since the program was initialised we must let the program clean up. 
     305                    OnExitInstance(this); 
    302306                    pipeServer.Abort(); 
    303307                } 
Note: See TracChangeset for help on using the changeset viewer.