public void DoWork() { while (true) { lock (clientConnWorkerList) { for (int i = clientConnWorkerList.Count - 1; i >= 0; i--) { ClientConnectionWorker worker = clientConnWorkerList[i]; if (worker.HasDisConnection()) { clientConnWorkerList.Remove(worker); worker.Stop(); worker.Dispose(); continue; } lock (worker.readPackageQueue) { while (worker.readPackageQueue.Count > 0) { NetPackage package = worker.readPackageQueue.Dequeue(); try{ ((TcpPackage)package).ServerDo(worker); }catch (System.Exception e) { Debug.LogError(e.StackTrace); } } } } } Thread.Sleep(1); } }
public void AddConnectionWorker(ClientConnectionWorker worker) { lock (clientConnWorkerList) { worker.Start(); clientConnWorkerList.Add(worker); } }
void StartClientThread(Connection newConn) { ClientConnectionWorker worker = new ClientConnectionWorker(newConn); serverDetailWorker.AddConnectionWorker(worker); }