Changeset 976


Ignore:
Timestamp:
5/5/2009 10:14:14 AM (5 years ago)
Author:
lowjoel
Message:

-Fixed the shutdown of Eraser: the RemoteExecutor? rewrite introduced a bug where the server instances continued to listen thus preventing the shutdown of Eraser.
-Always call base.Dispose since the base class may need to do cleaning up

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eraser6/Manager/RemoteExecutor.cs

    r971 r976  
    110110                thread.Abort(); 
    111111 
    112                 //Acquire all available locks to ensure no more server instances exist, 
    113                 //then destroy the semaphore 
    114                 for (int i = 0; i < maxServerInstances; ++i) 
    115                     serverLock.WaitOne(); 
     112                //Close all waiting streams 
     113                lock (servers) 
     114                    foreach (NamedPipeServerStream server in servers) 
     115                        server.Close(); 
     116 
     117                //Destroy the semaphore since all server instances have been closed 
    116118                serverLock.Close(); 
    117  
    118                 base.Dispose(disposing); 
    119             } 
     119            } 
     120 
     121            base.Dispose(disposing); 
    120122        } 
    121123 
     
    136138                    PipeOptions.Asynchronous); 
    137139                server.BeginWaitForConnection(EndWaitForConnection, server); 
     140                 
     141                lock (servers) 
     142                    servers.Add(server); 
    138143            } 
    139144        } 
     
    248253            { 
    249254            } 
     255            catch (ObjectDisposedException) 
     256            { 
     257            } 
    250258            finally 
    251259            { 
     260                lock (servers) 
     261                    servers.Remove(server); 
    252262                server.Close(); 
    253263                serverLock.Release(); 
     
    264274        /// </summary> 
    265275        private Semaphore serverLock; 
     276 
     277        /// <summary> 
     278        /// The list storing all available created server instances. 
     279        /// </summary> 
     280        private List<NamedPipeServerStream> servers = new List<NamedPipeServerStream>(); 
    266281 
    267282        /// <summary> 
Note: See TracChangeset for help on using the changeset viewer.