
Nikita
02.03.2017
12:16:47
-_\\
ещё и не читает

Му
02.03.2017
12:17:06
кроме того ты можешь увеличить количество коннектов которые могут так висеть

Nikita
02.03.2017
12:17:06
что ему пишут

Google

Konstantin
02.03.2017
12:17:14
еще года два после его увольнения ошибки в нем хитрые искали

Му
02.03.2017
12:17:24
но httpClient тут при чём

Nikita
02.03.2017
12:17:29
не спасает
приходится штуки типа SO_REUSEADDR выставлять

Му
02.03.2017
12:18:00
если ты будешь через один httpClient дёргать каждый раз разные хосты, а не один, у тебя будет тоже подобное

Nikita
02.03.2017
12:19:07
ну говорю вам, держите либо статический экземпляр дефолтного хэндлера

Женя
02.03.2017
12:19:14

Nikita
02.03.2017
12:19:29
либо свого с нужными политиками

Axm
02.03.2017
12:20:00

Nikita
02.03.2017
12:20:36
хочет, чтобы коллекция сама аггрерировала события всех элементов

Женя
02.03.2017
12:20:52

Axm
02.03.2017
12:21:12

Google

Arseniy
02.03.2017
12:21:23

Axm
02.03.2017
12:21:39

Nikita
02.03.2017
12:23:31
ну вот там игнорируются фичи клиента с дефолтными хидерами, поддержкой кук, вот этого всего
в чудо-статье вашей

Andrew
02.03.2017
12:24:50
или свою коллекцию, которая делает это-же под капотом
в люом случае подписка явная нужна

Nikolay
02.03.2017
12:26:43
Кто тут про телеграм говорил и голосовые звонки?)
http://telegra.ph/Predstoyashchie-obnovleniya-Telegram-Instant-View-platezhi-multi-akkaunt-i-golosovye-zvonki-02-28

Andrew
02.03.2017
12:26:49
можно айтемам подсовывать интерфейс и реализовать обсервабл
@tg_girl ты поясни чё делаешь точно

Ilya
02.03.2017
12:30:38

Vadim
02.03.2017
12:38:35
"всегда диспозьте"
@nikita_tsukanov, таски тоже диспоузишь?
PS: я не спорю, что HttpClient нужно диспоузить после использования, хотя нет смысла, если Singleton

Женя
02.03.2017
12:41:37
@tg_girl ты поясни чё делаешь точно
есть базовый класс устройства, от него унаследованы классы DeviceX и DeviceY, они получают байтовый поток от устройств полключенных к COM-порту, я детектирую что устройства подключены к компьютеру, и создаю соответствующий объекты ObjDeviceX_1, ObjDeviceX_2, ObjDeviceY_1 например. Кладу их в коллекцию. Теперь мне нужно обработать события, когда от устройства в COM порт приходит пакет. Т.е. в каждом классе должно быть событие например DeviceReceive. Че дальше делать мне как-то малопонятно

Nikolay
02.03.2017
12:45:02
<sarcasm>В любой непонятной ситуации делай Dispose</sarcasm>

Nikita
02.03.2017
12:45:12
в общем да

Andrew
02.03.2017
12:45:47
есть базовый класс устройства, от него унаследованы классы DeviceX и DeviceY, они получают байтовый поток от устройств полключенных к COM-порту, я детектирую что устройства подключены к компьютеру, и создаю соответствующий объекты ObjDeviceX_1, ObjDeviceX_2, ObjDeviceY_1 например. Кладу их в коллекцию. Теперь мне нужно обработать события, когда от устройства в COM порт приходит пакет. Т.е. в каждом классе должно быть событие например DeviceReceive. Че дальше делать мне как-то малопонятно
лучше в объект в конструкторе, или в сеттере прокидывай делегат(Action<> Func<> или свой) и дергай изнутри объекта, если делегат не null, тогда можно зависимости развязать будет, и параметр, где делегат прописывается, если параметр не один, то default value не забудь, чтоб можно было не указывать

Google

Nikita
02.03.2017
12:45:49
лучше сразу поймать ObjectDisposedException
чем потом искать утечку ресурсов

Nikolay
02.03.2017
12:46:37
Лучше почитать документацию
Чем потом ругать шарп за тормоза

Vinc
02.03.2017
12:46:49
правильно ли я понимаю работу try catch
try
{ some code}
catch (OneException)
{ do this }
catch (AnotherException)
{ do that }
catch (Exception ex)
{ Console.WriteLine(ex.Message) }
либо отработает без исключений, либо будет обработан код, соответсвующий одному из указаных исключений, либо любое из остальных исключений будет выведено в консоль?

Andrew
02.03.2017
12:47:17

Женя
02.03.2017
12:49:13

Vadim
02.03.2017
12:49:25

Andrew
02.03.2017
12:49:33

Axm
02.03.2017
12:51:32

Vinc
02.03.2017
12:51:41

Arseniy
02.03.2017
12:51:46


Axm
02.03.2017
12:52:20
class ItemEventList : List<Device>
{
public event EventHandler ItemEventTriggered;
public new void Add(Device item)
{
base.Add(item);
item.DeviceReceive += ItemOnDeviceReceive;
}
private void ItemOnDeviceReceive(object sender, EventArgs eventArgs)
{
ItemEventTriggered?.Invoke(this, EventArgs.Empty);
}
}
class Device
{
public event EventHandler DeviceReceive;
public void FireEvent()
{
DeviceReceive?.Invoke(this, EventArgs.Empty);
}
}

Arseniy
02.03.2017
12:52:49
то есть непонятно, зачем тебе какие-то события от коллекции вообще нужны нужны.

Женя
02.03.2017
12:53:08
спасибо! я все записываю)

Nikita
02.03.2017
12:53:37
а потом кто-нибудь вызовет Clear
а потом кто-нибудь скастует к IList
в общем, это, не надо наследовать ничего

Женя
02.03.2017
12:54:20

Google

Axm
02.03.2017
12:54:21

Nikita
02.03.2017
12:54:24
положить список в поле и пробросить наружу энумератор
это не "не готовое" решение, это неправильное решение

Arseniy
02.03.2017
12:55:19
а где хранить - пофиг. ну сложила ты в список, что от этого меняется? события у каждого объекта свои

Женя
02.03.2017
12:57:14
приходится все изучать на ходу

Admin
ERROR: S client not available

Arseniy
02.03.2017
12:58:34
если знаешь си, то пиши в стиле си. ооп-огород появится сам собой)

Женя
02.03.2017
12:59:34
ну руководство хочешь хороший проект на С# в ООП стиле, потому что старый написан на билдере в си стиле, ужасно глючный и кривой

Andrew
02.03.2017
12:59:35

Женя
02.03.2017
13:00:04

Andrew
02.03.2017
13:01:34

Женя
02.03.2017
13:04:41

Rick
02.03.2017
13:05:28
посоветуйте пожалуйста справочник по c#, кроме msdn и google )

Nikolay
02.03.2017
13:06:04

Arseniy
02.03.2017
13:07:27
ну ничего не известно же. я узнал только то, что обработчиков может быть много. известно про 2 сценария
1. пишем стрим в файл
2. пишем стрим подключившемуся пользователю.
теперь представим, что сидим и штатно пишем в файл. тут приходит юзер, который хочешь послушать в риалтайме.
как нам быть есть мы инжектим какие-то хендлеры или делегаты в конструкторе?
А если ничего не городить вообще, то можно зробить что-то вроде
var deviceObj = deviceObjects.Single(d => d.Identity == "some_id");
var handler = (sender, data) => SendToUser(sender, data, user, ...);
deviceObj.DataRevieved += handler;
....
//когда закончили
deviceObj.DataRevieved -= handler;


Andrew
02.03.2017
13:13:43
ну ничего не известно же. я узнал только то, что обработчиков может быть много. известно про 2 сценария
1. пишем стрим в файл
2. пишем стрим подключившемуся пользователю.
теперь представим, что сидим и штатно пишем в файл. тут приходит юзер, который хочешь послушать в риалтайме.
как нам быть есть мы инжектим какие-то хендлеры или делегаты в конструкторе?
А если ничего не городить вообще, то можно зробить что-то вроде
var deviceObj = deviceObjects.Single(d => d.Identity == "some_id");
var handler = (sender, data) => SendToUser(sender, data, user, ...);
deviceObj.DataRevieved += handler;
....
//когда закончили
deviceObj.DataRevieved -= handler;
ловить эти данные забота контейнера, иначе - это нарушение инкапсуляции. Ну, это если нужно в хорошем стиле с правильным ООП, Di и прочими умными словами, проброс из воркера мимо менеджера - хороший шорткат, но если проект большой - будет пиздец в поддержке, правильнее черный ящик иметь и даже внутренние дата-объекты не экспозить, а переоборачивать в дата-объекты следующего слоя абстракции


Arseniy
02.03.2017
13:15:38
ну это всё досужие рассуждения без тз и конкурс "кто больше додумает". я считаю, что вещи, как у жени в 2017 году надо делать через акторы. но мало ли, что я думаю, зная примерно ничего

Google

Nikolay
02.03.2017
13:19:45
Вы щас начинающему разработчику C# насоветуете)

Vasily
02.03.2017
13:20:05

Gid
02.03.2017
13:20:27
вместо того чтоб формы писать за 15$/h
несут хуйню какую-то
акторы-хуякторы

Andrew
02.03.2017
13:21:35

Леонид
02.03.2017
13:22:08

Nikolay
02.03.2017
13:22:10

Andrew
02.03.2017
13:22:29

Gid
02.03.2017
13:23:12
Я не некрофил

Му
02.03.2017
13:23:24

Andrew
02.03.2017
13:23:45

Axm
02.03.2017
13:24:43
у нас сейчас есть классы, которые в методах вызывают классы, которые в методах вызывают классы. ну вы понели.
и в каждом ебаном методе по перевызову другого метода, но зато энтерпрайзненько

Nikolay
02.03.2017
13:26:09
1. Пишешь говнокод
2. Прячешь его за 5 слоями абстракций, чтобы никто его не нашел
3. Выкладываешь на гитхаб, все восхищаются твоими абстракциями
4. Тебя зовут выступать на конференциях

zig ? zag
02.03.2017
13:26:40

Andrew
02.03.2017
13:27:34
и в каждом ебаном методе по перевызову другого метода, но зато энтерпрайзненько
Типы то все завернули в свои? Вот пример сииильно сокращённого интероп хелпера, к нему в итоге обращается вагон красивых абстракнтых айтемов, БЛЛ там всякие, вьюмодели, в итоге в сборщике тупо руками создается/генерится лист и туда вписывается лямбда с вызовом апишки https://gist.github.com/dron247/5e3df3b69fe6f595bf9a3aed1774fa7d
Эта группа больше не существует