|
Thread Collection
|
|||
---|---|---|---|
#18+
Скажу сразу, у меня сторонняя коллекция, поэтому сделать ее потокобезопасной не получится((. Подобные примеры я находил для ObserveableCollection/ Суть такая - есть контрол. во View. Есть коллекция во ViewModel. Через Binding цепляю эту коллекцию к контролу. Далее запускаю метод, который через Dispatcher моего контрола запускает новый поток, в котором идет инициализация объектов коллекции. Так вот - если по такой логике работать - то система ругается - типа не нельзя работать с объектами из другого потока. Ругается именно на коллекцию. Что типа пишет - коллекция создана в другом потоке и т.д. Я пробовал передавать в новый опток коллекию из потока UI (созданной в потоке UI)? пробовал создавать коллекцию в новом потоке и возвращать ее. Везде одна и тай же байда. Со значимыми типа все работает - проблема именно с коллекцией - так как из другого потока возвращается ссылка на коллекцию.. Может кто сталкивался? Свойства у Binding IsAsync мне ничем не помогло ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2012, 14:02 |
|
Thread Collection
|
|||
---|---|---|---|
#18+
unknownfromrus, В догонку. Может кто уже делал - и есть готовый механизм. Не секрет, что если в отдельном потоке изменяются поля класса или коллекции, то PropertyChanged в UI потоке не срабатывает. Как можно это решить? Пока плотно этим не занимался - но думаю с PropertyChanged из другого потока придется сгеодня - завтра плотно столкнуться ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2012, 14:21 |
|
Thread Collection
|
|||
---|---|---|---|
#18+
Коллега, поток UI трогать нельзя, это святое. Такие задачи решаются с помощью делегата. Обратись к документации, там все расписано, ну и архитектуру WPF стоило бы тоже рассмотреть. Удачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2012, 21:28 |
|
Thread Collection
|
|||
---|---|---|---|
#18+
WPF, Ну вообще я как правило использую не делегаты а лямба-выражения. По поводу архитектуры WPF - ну я бы не сказал что плохо ее знаю)). Я уже описывал - что многопоточность в WPF я использовал - но только тогда - когда эелементу из основного потока через диспатчер и присваивал какое-то значение. Я не использовал многопоточность в WPF через Binding. Поэтому если есть примеры - лучше дать пример - а не ссылать на абстрактные предложения - типа почитайте МСДН ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2012, 10:08 |
|
Thread Collection
|
|||
---|---|---|---|
#18+
Прости, немного резко ответил, поддатый был. Далее, почему архитектура, потому что в самой основе архитектуры заложен поток, который запускает другие потоки. Обрати на это внимание, сделано специально, чтобы облегчить работу с потоками. Лямба-выражения и есть обертка для делегата. В Binding конечно не надо использовать другой поток, уже поздно, делай это раньше, при инициализации ViewModel например. Есть и другие решения, например сделать коллекцию статик или, если это медленный процесс, использовать Task. Не совсем понятны условия, напиши подробней или приведи часть кода, где это делаешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2012, 12:30 |
|
Thread Collection
|
|||
---|---|---|---|
#18+
Пример для Northwind ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2012, 12:34 |
|
Thread Collection
|
|||
---|---|---|---|
#18+
Напиши понятно или нет. Кстати коллекцию еще можно клонировать ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2012, 12:39 |
|
Thread Collection
|
|||
---|---|---|---|
#18+
skole, Спасибо за пример. Очень страно, можно сказать подобным образом делал - но почему-то система ругалась - что не может читать данные из коллекции созданной в другом потоке. Надо будет разобраться. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2012, 12:49 |
|
Thread Collection
|
|||
---|---|---|---|
#18+
WPF, С клонированием все пашет - я не стал тогда писать об этом. Просто я такие варианты беру когда уже не могу найти нормальное решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2012, 12:50 |
|
|
start [/forum/topic.php?fid=21&msg=38007975&tid=1441633]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 186ms |
0 / 0 |