public void Free() { lock (globalLock) { if (--poolUsers > 0) { return; } lock (workItems) { stopped = true; threadDone.Set(); workItems.Clear(); foreach (Thread t in runningThreads) #if !TARGET_JVM { t.Abort(); } #else { t.Interrupt(); } #endif runningThreads.Clear(); } if (this == sharedPool) { sharedPool = null; } } }
public void StartListening(object data) { #if TARGET_JVM stopped = false; #endif listener = new TcpListener(bindAddress, port); if (server_thread == null) { threadPool = RemotingThreadPool.GetSharedPool(); listener.Start(); if (port == 0) { port = ((IPEndPoint)listener.LocalEndpoint).Port; } string[] uris = new String [1]; uris = new String [1]; uris [0] = GetChannelUri(); channel_data.ChannelUris = uris; server_thread = new Thread(new ThreadStart(WaitForConnections)); server_thread.IsBackground = true; server_thread.Start(); } }
public static RemotingThreadPool GetSharedPool () { lock (globalLock) { if (sharedPool == null) sharedPool = new RemotingThreadPool (); sharedPool.poolUsers++; } return sharedPool; }
public static RemotingThreadPool GetSharedPool() { lock (globalLock) { if (sharedPool == null) { sharedPool = new RemotingThreadPool(); } sharedPool.poolUsers++; } return(sharedPool); }
public void Free () { lock (globalLock) { if (--poolUsers > 0) return; lock (workItems) { stopped = true; threadDone.Set (); workItems.Clear (); foreach (Thread t in runningThreads) #if !TARGET_JVM t.Abort (); #else t.Interrupt(); #endif runningThreads.Clear (); } if (this == sharedPool) sharedPool = null; } }