示例#1
0
 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);
     }
 }
示例#2
0
 public void AddConnectionWorker(ClientConnectionWorker worker)
 {
     lock (clientConnWorkerList)
     {
         worker.Start();
         clientConnWorkerList.Add(worker);
     }
 }
示例#3
0
    void StartClientThread(Connection newConn)
    {
        ClientConnectionWorker worker = new ClientConnectionWorker(newConn);

        serverDetailWorker.AddConnectionWorker(worker);
    }