Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Допустим, у нас есть класс-провайдер данных вида и мы подгружаем данные, например, из xml файла. Код: plaintext 1. 2. Как реализовать этот класс? Дело в том, что подгрузка данных асинхронна и непонятно как передать вызывающему методу загруженные данные. Можно сделать вызов своего события по срабатыванию события окончания загрузки данных из xml, но это немного не то, что нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 07:47 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
enigmatic, Хм... Немного не понятно, а зачем вы так хотите сделать? В SL специально все прокси классы на сервисы генерируются только с поддержкой асинхронных операций. Будет по другому - интерфейс будет очень заметно тормозить. Если вы все таки обрабатываете это в другом потоке, то в реализации IDataProvider просто вызывайте метод сервиса с подпиской на возврат, потом ждите пока ответ придет, и возвращайте результат. Но все же хотелось узнать, зачем это нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 08:49 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
По вопросу вообще нихрена не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 08:51 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
МСУПо вопросу вообще нихрена не понятно. По-моему, очень даже понятно: автор - совершеннейший "нуб"... (он думает, что асинхронный вызов метода должен возвращать куда-то данные, которые этот метод возвращает синхронно). RTFM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 10:30 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 10:46 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
2 Denis Gladkikh Допустим, у нас есть модель: class Model { string List<Data> {get; set;} } Есть View где прописано: в xaml: ItemsSource="{Binding}" в коде: Код: plaintext 1. 2. 3. Код: plaintext 1. И есть DataProvider, который нам эти данные возвращает. Данные берутся из xml файла, который выкачивается WebClient'ом асинхронно. Вопрос: как должен выглядеть GetData() класса DataProvider, чтобы DataProvider мог реализовать интерфейс: [SRC C#]public interface IDataProvider { List<Data> GetData(source); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 11:14 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
Подписка на возврат это не есть хорошо, т.к. получается что-то вида: Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 11:23 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
Любовь к собственным велосипедам у нас неистребима. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 11:29 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
А еще есть мысли, что DataProvider должен быть в виде WCF service. Еще есть такой вариант: http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=807655&msg=9813716 Еще, может я и нуб, но похоже т-щ qu-qu либо ничего не понял, либо нихрена не шарит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 11:37 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 11:52 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
enigmaticА еще есть мысли, что DataProvider должен быть в виде WCF service. Еще есть такой вариант: http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=807655&msg=9813716 Еще, может я и нуб, но похоже т-щ qu-qu либо ничего не понял, либо нихрена не шарит. Г-хоспаде! (обижаться сразу). Наберите сперва 3410 постов на этом форуме (большинство из которых "по делу"), а потом уже обижайтесь (если вам тогда захочется, или вас кто-то с 34-мя постами начнет критиковать). З.Ы. а по ссылке, что вы привели - если хотя бы 50% из написанного в том посте кода вам понятно, то задавать вопросы типа пост-старта уже не имеет необходимости... (ИМХО). (учите матчасть, уважаемый, я таких как вы ем на завтрак или закусываю ими пиво во время ночных инспекций по проф-форумам). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 12:02 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 12:06 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
iШайтан Реализация модели асинхронного программирования в CLR. Джеффри Рихтер С Rx все гораздо проще может ТС захочет вообще основы понять и не использовать "чужие" рассширения :) и у Рихтера есть попроще Упрощение модели асинхронного программирования с помощью AsyncEnumerator. Джеффри Рихтер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 12:13 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
i С Rx все гораздо проще если есть подходящие методы для Observable.FromAsyncPattern, у WebClient-а их нет, к сожалению... а вообще, Rx - замечательная библиотека (некоторые разработчики считают что она будет включена в fw5) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 12:15 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
LRа вообще, Rx - замечательная библиотека получил настоящее удовольствие от этого примера (вспомнились чьи-то жалобы, что в сильвере нет workflow, так вот же он! :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 12:23 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
Шайтан Реализация модели асинхронного программирования в CLR. Джеффри Рихтер Рихтер, конечно, умный чувак, но реализация IAsyncResult у него там типа "для статьи", лучше (мне кажется) пользоваться стандартными делегатами и готовой реализацией IAsyncResult из фреймворка. З.Ы. нагружать топик-стартера собственной (Рихтеровской) реализацией IAsyncResult (ИМХО) - только портить... (у него еще столько впечатлений впереди от изучения асинхронной модели как таковой). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 12:32 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
qu-qu, Да никто не обижался, вопрос был в том, как заставить DataProvider удовлетворять простому интерфейсу, т.е. чтобы снаружи это выглядело как синхронный вызов, а не делать коллбек с подпиской на завершение загрузки данных. Потому, что в первом случае оно выглядит вот так: Код: plaintext 1. 2. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 12:43 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
LRi С Rx все гораздо проще если есть подходящие методы для Observable.FromAsyncPattern, у WebClient-а их нет, к сожалению... а вообще, Rx - замечательная библиотека (некоторые разработчики считают что она будет включена в fw5) Для WebClient'a я уже приводил решение с Rx. Рихтера и Net 2.0 давно уже пора на муккулатуру сдать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 12:53 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
enigmaticПричем, чтобы тот кто использует этот поставщик не заморачивался по поводу завершилась ли у него загрузка данных или нет. Чудеса бывают только под елкой в Новый год, а это не тот случай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 12:56 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
enigmaticqu-qu, Да никто не обижался, вопрос был в том, как заставить DataProvider удовлетворять простому интерфейсу, т.е. чтобы снаружи это выглядело как синхронный вызов, а не делать коллбек с подпиской на завершение загрузки данных. Потому, что в первом случае оно выглядит вот так: Код: plaintext 1. 2. Код: plaintext 1. 2. 3. Всего-то и делов? ("правильно сформулированный вопрос содержит половину ответа" (с) не помню чей). Попробуйте, хотя бы, так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 12:58 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
qu-qu, Ошибся немного, вместо Func<object, Data> надо писать Func<object, List<Data>> (нет компилера еще в голове). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 13:00 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
qu-qu, Похоже, то что надо. Спасибо. Извините, если обидел. Пойду разбираться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 13:04 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
enigmatic, Кстати, товарищи вам совершенно справедливо заметили о том, что для SL такой подход не катит, т.к. на все время выполнения загрузки данных ваш UI будет висеть... З.Ы. не даром MS не стала реализовывать синхронную модель обращения к сервисам из-под SL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 13:04 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
enigmaticqu-qu, Похоже, то что надо. Спасибо. Извините, если обидел . Пойду разбираться. Гм, ну точно - "нуб" (по крайней мере в этом форуме). (почитали бы вы как тут ко мне обращались в других ветках... впрочем, меня это не колышет, мне гораздо важнее - сухое: "то что надо. Спасибо", а таких комментов, слава БГ, пока больше). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 13:09 |
|
||
|
[SL] Асинхронность и загрузка данных
|
|||
|---|---|---|---|
|
#18+
qu-quenigmaticqu-qu, Да никто не обижался, вопрос был в том, как заставить DataProvider удовлетворять простому интерфейсу, т.е. чтобы снаружи это выглядело как синхронный вызов, а не делать коллбек с подпиской на завершение загрузки данных. Потому, что в первом случае оно выглядит вот так: Код: plaintext 1. 2. Код: plaintext 1. 2. 3. Всего-то и делов? ("правильно сформулированный вопрос содержит половину ответа" (с) не помню чей). Попробуйте, хотя бы, так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Если перевести, что сказал Денис , то достаточно создать обычный синхронный WCF сервис, а студия для него сгенерит асинхронный прокси с нужными BeginXXXX, EndXXXX. Не нужны эти пляски с бубном ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 13:09 |
|
||
|
|

start [/forum/topic.php?fid=21&fpage=58&tid=1442535]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
22ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 9ms |
| total: | 123ms |

| 0 / 0 |
