public int Connect(string name) { Abonent abonent; string typeConnect; if (allAbonents.ToList().Exists(ab => ab.Value.name == name)) { abonent = allAbonents.ToList().Find(ab => ab.Value.name == name).Value; if (abonent.status == Status.Online) { _logger.Logging("Попытка повторного входа!"); return(-1); } typeConnect = "существующий "; links[abonent.id] = _binding.GetChannelCallback(OperationContext.Current);; // OperationContext.Current.GetCallbackChannel<IMessageCallback>(); abonent.status = Status.Online; } else { typeConnect = "новый "; abonent = new Abonent() { id = idAbonent, name = name, status = Status.Online }; _dataBase.AddAbonentToDb(abonent.id, abonent.name); allAbonents.Add(idAbonent++, abonent); links[abonent.id] = _binding.GetChannelCallback(OperationContext.Current);//OperationContext.Current.GetCallbackChannel<IMessageCallback>(); } //Дать знать остальным пользователям о подключении нового foreach (var index in links.Keys) { if (allAbonents[index].status == Status.Online && allAbonents[index].id != abonent.id) { links[index].cbShowAbonent(abonent); } } _logger.Logging("Подключился " + typeConnect + abonent.name); return(abonent.id); }