Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
Есть список людей отображаемый в гриде, при выделении человека, он становится «текущим» и для «текущего» вызывается фунцкия сервиса GetDetailAsync(PersonId) запрашивающая детали человека, по завершении вызывается GetDetailAsyncCompleted() где полученные детали присваиваются «текущему» человеку........... проблема в том, что «текущий» уже может быть другой человек, т.к. юзер переместился на другую строчку грида.......... 1 вариант решения такой: не давать пользователю менять «текущего» человека.......... но тогда где «асинхронное» программирование? Другие варианты/предложения? С уважением, Ашот. p.s. посылать подальше не спешите, сам дорогу знаю, мсдн, рсдн... просто хочется узнать как народ обычно выкручивается из подобных ситуаций, просто на словах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 10:37 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
karapetyan_a, не надо выкручиваться. нужно просто принять данные от первого асинхрона и не отображать их. а данные от второго(который на данный момент станет текущим) отобразить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 10:40 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
AlexeiKkarapetyan_a, не надо выкручиваться. нужно просто принять данные от первого асинхрона и не отображать их. а данные от второго(который на данный момент станет текущим) отобразить. GetDetailAsyncCompleted() не знает он вызван для первого или для второго........ Хотя........ чуток слукавил, конкретно в моем случае по возвращаемым значениям можно понять для кого он вызван. но "это частность, которая к общему делу не отноститься" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 10:47 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
Скачай лабораторные работы по Rx, посмотри, как с помощью оператора Switch решается подобная проблема для AutoCompleteBox ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 10:50 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
iСкачай лабораторные работы по Rx, посмотри, как с помощью оператора Switch решается подобная проблема для AutoCompleteBox судя по всему речь идет о Лабораторные по Reactive Extensions, в первый раз слышу, качаю, посмотрю......... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 10:54 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
авторэто частность, которая к общему делу не отноститься эта частность неплохо обобщается: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 10:56 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
Вестник, Убедил, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 11:01 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
не забудьте lock(Context.CurrentParameters) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 11:03 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
Вестник, Врать не буду........ про оператор lock увидел/узнал вчера (раньше не сталкивался с многопоточностью), чуток почитал, но "досконально" не разобрался... видимо надо докопать до конца :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 11:08 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
иначе во время Process() у вас изменится CurrentParameter и вы опять столкнетесь с той же самой проблемой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 11:15 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
Может лучше делать поиск сущности в списке по ключевому полю и заменять её вновь полученной? Тогда пофиг какая запись текущая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 11:27 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
тогда возможна проблема "потерянного обновления". во временной оси: запрос 1 запрос 2 запрос 2 завершился, обновил запись №14 запрос 1 завершился, обновил запись №14 более поздний запрос 2 будет потерян ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 11:30 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
Вестникне забудьте lock(Context.CurrentParameters) Если не трудно, вставте сюда lock(??) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 11:32 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
Вестниктогда возможна проблема "потерянного обновления". во временной оси: запрос 1 запрос 2 запрос 2 завершился, обновил запись №14 запрос 1 завершился, обновил запись №14 более поздний запрос 2 будет потерянМаловероятно, если речь идёт о редактировании текущей записи в форме редактирования или ещё где. А использование timestamp-а записи при сохранении в БД оградит от нарушения целостности, даже если это каким-то чудом произойдёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 11:36 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
Алексей КМожет лучше делать поиск сущности в списке по ключевому полю и заменять её вновь полученной? Тогда пофиг какая запись текущая. Правильно ли я понял: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 11:39 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
Невнимательно прочитал, сори :-) Но всё равно маловероятно. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 11:40 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
karapetyan_aЕсли не трудно, вставте сюда lock(??) не то, чтобы трудно, но у вас в одном классе, модель не отделена ни от сервиса, ни от текущего контекста, что не есть правильно если очень хочется, то, первый lock Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 12:38 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
ВестникНеужели сеттер свойства CurrPerson может быть вызван не из гуйного потока? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 12:59 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
нужно запретить его изменение пользователем во время того, как сервис начал обновлять данные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 13:02 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
Вестникнужно запретить его изменение пользователем во время того, как сервис начал обновлять данныеСобытие XXXCompleted выполняется в гуйном потоке, если речь идёт о типовом силверлайтном клиенте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 13:08 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
коллега, с вами приятно общаться, но предлагаю ТС самому дальше поработать над своим приложением. пусть сам думает, халявные решения отучают думать самостоятельно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 13:15 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
Вестникколлега, с вами приятно общаться, но предлагаю ТС самому дальше поработать над своим приложением. пусть сам думает, халявные решения отучают думать самостоятельно Тем и занят, спасибо всем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 13:18 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
Алексей КВестникнужно запретить его изменение пользователем во время того, как сервис начал обновлять данныеСобытие XXXCompleted выполняется в гуйном потоке, если речь идёт о типовом силверлайтном клиенте. Лёня, я тоже чёта не понял, о каком локе Вестник вещает. P.S. Вестник, расскажите, какое Вы хотите сделать разделение конкурентного доступа в текущем потоке? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 13:27 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
ниоткуда не следует, что речь идет о SL и также ниоткуда не следует, что приложение у клиента принципиально однопоточное. кроме того, даже в однопоточном асинхронном приложении запросто возникает проблема "потерянного обновления" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 13:31 |
|
||
|
Каково типичное решение проблем асинхронного вызова?
|
|||
|---|---|---|---|
|
#18+
Вестникниоткуда не следует, что речь идет о SL Да речь идет именно о Siverlight..... Честно говоря, ента асинхронность поставила под сомнение всю мою архитектуру... Идея была такая 1. Есть набор классов/сущностей (Model)которые реализуют INotifyPropertyChanged Есть так-же класс содержащий в себе все сущности в виде свойств (CurrentPerson, CurrentUser, People(collection) Который тоже генерит PropertyChanged... 2. Есть контролы (View) которые биндятся к свойствам MyData.CurrentPerson, MyData.CurrentUser и отображают их. 3. Есть контроллер(Controller), в котором реализована вся функциональность по доступу к сервисам, и который в свою очередь слушает события PropertyChanged у MyData. к примеру если меняется (инициатор изменения юзер, то бишь с интерфейса) CurrentPerson то надо подгрузить детали сего Person-а, а дело View просто эти детали отобразить. Но получается, что если юзер нервно меняет текущего Person-а, контроллер не знает чьи детали пришли (в XXXcompleted методе... ) Вот, перечитал......... какая была идея......... :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 14:03 |
|
||
|
|

start [/forum/topic.php?fid=21&msg=36861847&tid=1442655]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
26ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 334ms |

| 0 / 0 |
