|
7 / 7 / 4
Регистрация: 25.03.2013
Сообщений: 117
|
|
.NET 4.x Потокобезопасно изменить коллекцию08.01.2014, 17:26. Показов 4856. Ответов 62
Метки нет (Все метки)
Коллекция прибиндина (binding) к listbox-у на вьюшке. Данные из коллекции (статус) обновляются из интернета, что может происходить долго и для того, чтобы интерфейс не завис - все делаю в асинхронном методе. Проблема в том, что во время обновления юзверь может удалить или добавить в коллекцию items.
Попробывал заблочить клавиши "добавить" и "удалить" пока обновляется список, но беда - долго обновляться может а у юзверей нету терпения, и возможность удалять и добавлять в коллекцию данные во время ее обновления надо. То как потокобезопасно изменять коллекцию? Добавлено через 2 часа 30 минут Есть предложения?) ТК я в тупике)
0
|
|
| 08.01.2014, 17:26 | |
|
Ответы с готовыми решениями:
62
|
| 09.01.2014, 14:34 | |||||||||||||
|
Я как раз писал, что не следует использовать try-catch, если не понимаешь алгоритма до конца, если брать ваш пример, его стоило было оформить так:
Приведу еще один пример из жизни. У разработчика периодически падало подключение к SQL Server (сетка плохая и т.п.), так вот он взял и обернул в try-catch (не суть как), но со временем SQL стал падать с таймаутом (при чем у заказчика). Пока не вычистили все try-catсh, так и не могли найти ошибки.
0
|
|||||||||||||
|
7 / 7 / 4
Регистрация: 25.03.2013
Сообщений: 117
|
||||||
| 09.01.2014, 15:49 [ТС] | ||||||
|
Psilon, могу удалять. и была трабла что foreach слетал(т.к. во время прохождения по коллекции она была изменена)
Сейчас сделал немного через п**у, но пока работает:
0
|
||||||
|
Master of Orion
|
|
| 09.01.2014, 16:48 | |
|
1
|
|
| 09.01.2014, 16:52 | |
|
Psilon, можно вопрос.
Вот вы дали ссылку (и многие другие дают), а есть ли опыт использования типов из этой коллекции. Я вот не представляю в какой задаче можно использовать хотя бы одну коллекцию. Обычно при синхронизации делаю либо сразу действие (в случае Stack и Queue) или просто слепок коллекции для дальнейшей работы.
0
|
|
|
Master of Orion
|
|
| 09.01.2014, 16:55 | |
|
Grishaco, ну ConcurrentStack и ConcurrentQueue я надеюсь вы понимаете когда использовать. Если нужен многопоточный аналог массива\List - то это Bag.
А вообще lock free очень интересная тема. Добавлено через 46 секунд http://habrahabr.ru/company/ifree/blog/195770/
0
|
|
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|||
| 09.01.2014, 21:18 | |||
|
Grishaco, т.е try-catch все таки используете в проектах. Ну и славно, а то после фразы
0
|
|||
|
10 / 25 / 9
Регистрация: 08.12.2013
Сообщений: 115
|
|
| 09.01.2014, 21:23 | |
|
0
|
|
| 09.01.2014, 21:26 | ||||
|
0
|
||||
|
10 / 25 / 9
Регистрация: 08.12.2013
Сообщений: 115
|
||
| 09.01.2014, 21:29 | ||
|
System.Threading.Monitor System.Threading.ReaderWriterLockSlim System.Collections.Concurrent.Concurrent Queue
0
|
||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
||
| 10.01.2014, 07:26 | ||
|
1) Вы считаете что отключать элементы интерфейса это моветон и таже студия которая на момент долгих операций (при коипиляции например) блокирует половину меню поступает в корне неверно? 2) Как биндинги помогут вернуть курсор в указатель из часов при выбросе искличения в функции?
0
|
||
|
burning1ife
|
|||||||||||||
| 10.01.2014, 10:13 | |||||||||||||
|
Если ни один не выбран, то кнопка неактивна. А также в программах с большим функционалом иногда в панели очень много кнопок, и в зависимости от контекста они могут быть неактивны. Добавлено через 1 минуту Добавлено через 1 минуту
0
|
|||||||||||||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|||||||
| 10.01.2014, 10:51 | |||||||
0
|
|||||||
|
burning1ife
|
|
| 10.01.2014, 11:10 | |
|
вы сделали ли:
throw new Exception("Некорретное значение х"); как без try-finally? и зачем без try-finally? конечно лучше исключить их использование, когда можно провести валидацию, а не отдавать все на случай появления исключения, но в случаях, например, работы с удаленными сервисами, когда может он может не ответить тут никак. да и вообще логику работы с ними в отдельный модуль, который уже обработает и вернет осмысленный ответ.
0
|
|
| 10.01.2014, 11:17 | |||||
|
0
|
|||||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
||||||
| 10.01.2014, 11:50 | ||||||
|
Grishaco,
0
|
||||||
| 10.01.2014, 11:58 | |||||||
|
1. Если исключение кинул программист, будет делать корректную валидацию и убирать throw. 2. Если исключение возникло в процессе тестирования (не валидные данные), опять же будет исправлять программист, в данном случае у него будет вся информация об исключении. У меня такое ощущение, что мы либо не понимаем друг друга, либо говорим об одном и том же, только по разному. Давайте так, мы работает в одной команде, я написал класс
0
|
|||||||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
||
| 10.01.2014, 11:58 | ||
|
Мне интересен способ реанимации интерфейса без них.
0
|
||
| 10.01.2014, 12:03 | ||
|
Или вы не представляете себе код без try-catch? Добавлено через 2 минуты P.S. Я привел пример, возможно не удачный. Давайте теперь вы приведете пример где никак не обойтись без try-finaly. Я во всяком случае такого не встречал.
0
|
||
| 10.01.2014, 12:03 | |
|
Отобразить коллекцию Реализовать коллекцию Отсортировать коллекцию
Объект в коллекцию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|