« first day (893 days earlier)      last day (2138 days later) » 

7:29 AM
@VladD итог. если у нас есть общий сервис, который нужно шарить и у него есть события то мы можем
1) использовать SyncRoot (я таки вспомнил как оно называется)
например его недостоаток то что мы можем затребовать syncRoot и вызвать что-то еще что тоже само запросит syncRoot и будет дидлок
2) использовать обычный внутренний лок (AsyncLock)) для модификации коллекции и событий
(тут я считаю что нельзя отделять событие от модификации, то есть следует отличать ситуацию "изменили коллекцию и запланировали уведомление" от транзакции "меняем коллекцию, уведомляем, получаем новое состояние системы,
 
 
6 hours later…
1:55 PM
@vitidev 1) Syncroot, точно. Но Microsoft его сама не рекомендует, т. к. его использование невозможно заэнфорсить.
@vitidev 2) Эээ. Отправлять события под локом я бы не советовал. Т. к. пахнет дэдлоками. Но создавать EventArgs нужно под тем же lock'ом.
Да, придётся продумать правильную систему примитивов. Просто тупо перенести примитивы из немногопоточного случая -- неправильно.
@vitidev 3) Редирект у меня работал. То есть события всё равно занимают какой-то поток, а так это будет один и тот же поток.
Минус, как мне кажется -- расходы на переброску в нужный поток выше, чем просто на блокировку
> public async Task<IReadOnlyCollection<T>> ModifyAndRead(Action<ListMutator> action)
почему бы и нет, если будет удобно?
 
2:35 PM
привет. Здесь просто обсуждают c#/.net или можно вопросы задавать?
 
A K
@xomem Вопросы лучше задавать на основном сайте, а сюда всякий оффтоп по c# (неформатные вопросы) или какие-то длинные обсуждения
 
@AK Ясно
 
 
2 hours later…
A K
4:44 PM
Какой любопытный глюк
SELECT TOP 1000
[ID]
,[LASTNAME]
,[MIDDLENAME]
,LEN([MIDDLENAME])
,DATALENGTH([MIDDLENAME])
,[FIRSTNAME]
FROM [CONTACT]
where 1 = 1
and MIDDLENAME <> ''
and 2 * LEN([MIDDLENAME]) <> DATALENGTH([MIDDLENAME])
Спорили до ругани "нет там пробела", "есть там пробел"...
Оказалось, что разные версии SSMS то показывают пробел, то не показывают пробел
 
 
6 hours later…
10:34 PM
@VladD енфорсить может только прятать все за методы. Для всего остально нужны анализаторы.
А если не вносить под локи вызовы евентов то получив событие клиент все равно не сможет запросить список, ведь за это время он может измениться
 

« first day (893 days earlier)      last day (2138 days later) »