// Разрегистрация клиента
 public static void UnregisterClient(CometAsyncState state)
 {
     lock (_lock)
     {
         // Просто удаляем его из списка
         _clientStateList.Remove(state);
     }
 }
 // Регистрация клиента
 public static void RegicterClient(CometAsyncState state)
 {
     lock (_lock)
     {
         // Присваиваем гуид и добавляем в список
         state.ClientGuid = Guid.NewGuid().ToString("N");
         _clientStateList.Add(state);
     }
 }
 // Срабатывает кажды раз при запуске клиентом очережного запроса Long poll
 // так как при этом HttpContext клиента изменяется, то на до обновить
 // все изменившиеся данные клиента в списке, идентифицируемом по гуиду,
 // который у клиента в течение работы остается постоянным
 public static void UpdateClient(CometAsyncState state, String guid)
 {
     lock (_lock)
     {
         // ищем клиента в списке по его гуиду
         CometAsyncState clientState = _clientStateList.Find(s => s.ClientGuid == guid);
         if (clientState != null)
         {
             // и если он нашелся, то обновляем все его параметры
             clientState.CurrentContext = state.CurrentContext;
             clientState.ExtraData      = state.ExtraData;
             clientState.AsyncCallback  = state.AsyncCallback;
         }
     }
 }