Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Допустим, нам нужно загрузить из инета главную гугла и яндекса через сильверлайт. Просто подгрузить как данные. При этом, яндекс должен грузиться после гугла. Это можно сделать примерно так (просто поменял линки и имена..): GoogleAndYandex Код: 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. Т.е. подгружаем сначала гугл, потом в обработчике подгрузки гугла грузим яндекс. Теперь допустим, что нам нужно грузить сначала яндекс, затем гугл и гугл должен быть подгружен после яндекса. Это можно сделать так: YandexAndGoogle Код: 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. А как написать код, чтобы можно было "расцепить" загрузку яндекса и гугла? Т.е. чтобы можно было написать что-то вроде: Код: plaintext 1. 2. 3. 4. 5. SL 4.0, VS 2010. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2011, 09:17 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
Пост немного сломался, но думаю мысль ясна. Кстати, данные яндекс с гуглом не отдадут из-за кроссдоменной политики доступа, но не в этом суть. Нашел следующий пример и думаю это то, что надо: http://www.csharp411.com/convert-between-synchronous-and-asynchronous/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2011, 09:57 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
Получилось нечто следующее: код Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. но оно не совсем работает, потому что LoadingEnd не срабатывает по событию OpenReadCompleted или не срабатывает само событие OpenReadCompleted. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2011, 12:07 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
Похоже, дело в том что WebClient объявлен в главном потоке, а обработчик LoadingEnd должен отработать в отдельном. Вобщем, переводя с русского на русский: Как написать код, который делает 2 асинхронных вызова, один за другим, так чтобы они не были связаны между собой? Чтобы вместо: Код: 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. 28. 29. 30. 31. Можно было написать: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2011, 13:08 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
enigmatic, а что мешает создать (и использовать) два WebClient-а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2011, 15:20 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
LR, Это было бы решением, но нужно вызывать одну функцию четко после другой. Т.е. например для Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2011, 12:46 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
Это полезно когда нужно сделать определенную цепочку действий, например, авторизоваться и только затем что-то делать. Пробовал: Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2011, 11:35 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
enigmatic, ерундой занимаетесь... если так нужно, создайте класс обертку для вашего функционала, в котором будет пул потоков и собственно метод для открытия потока, как потоки отработали кидать событие, а вы в своем классе на него подпишитесь и поймаете его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2011, 12:48 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
уТКа, Хорошо, так и попробую сделать. Под пулом потоков понимается ThreadPool или какой-то свой, пользовательский пул? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2011, 13:23 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
И так как все равно уже написал, то вот более подробное описание темы. Допустим, у нас есть задача - авторизоваться на сервере и получить данные. Это делается как-то так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Пусть для этого нам служит некоторый сервлет "authorizeCheck", возвращающий истину, если мы авторизованы, иначе ложь. Тогда получается: Код: 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. 28. Вопрос, как избежать этой лапши и написать нормальный код, вроде: Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. Как написать это правильно и просто? Копал в сторону размещения асинхронных операций в отдельных потоках, и думаю правильно копал. Но пока получить то что хотелось не удалось. Код писал в блокноте, опустив детали, оставив только главное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2011, 13:30 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
enigmaticКак написать это правильно и просто? Копал в сторону размещения асинхронных операций в отдельных потоках, и думаю правильно копал. Копал неправильно. Смотри Rx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2011, 15:47 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
i, Почему именно Rx? Почему это нельзя сделать с помощью простых сигналов? Ведь работает же, если не нужно дожидаться событий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2011, 18:30 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
enigmatic, на самом деле решил поинтересоваться этой темой, и вот что выходит: Асинхронность 2 Синхронность в Сильвере крайне сложно реализовать, в частности в работе с WCF интересные ссылки которые удалось нарыть: http://blogroll.pcmag.ru/go.php?nid=174593 http://www.gotdotnet.ru/blogs/jinek/9397/ http://www.gotdotnet.ru/blogs/diverofdark/8134/ http://blogs.msdn.com/b/rxteam/ http://channel9.msdn.com/blogs/j.van.gogh/writing-your-first-rx-application http://stackoverflow.com/questions/3801505/using-rx-to-simplify-an-asynchronous-silverlight-web-service-request Async CTP: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=18712f38-fcd2-4e9f-9028-8373dc5732b2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2011, 01:25 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
"все украдено до нас" дейлайте синхронизацию на основе ManualResetEvent, который шарится, первый метод его стопает и в колбеке отпускает, второй ждет освобождения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2011, 10:59 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
в .net 4.0 пришло счастье Task.ContinueWith ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2011, 13:56 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
enigmaticLR, Это было бы решением, но нужно вызывать одну функцию четко после другой. Т.е. например для Код: plaintext 1. 2. C Rx нужно будет написать 4 строчки Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2011, 07:26 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
@автор: я нашел и написал приложение для Синхронного вызова Ассинхронных методов: вот рабочий пример по работе нужно было, делюсь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2011, 18:17 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
уТКа@автор: я нашел и написал приложение для Синхронного вызова Ассинхронных методов: вот рабочий пример по работе нужно было, делюсь :) Утка, не читай русскоязычных блогов и не повторяй глупости от туда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 00:52 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
i, по меньше симсонов смотрите :D когда говорят "надо Синхронный вызов WCF из Silverlight" - это значит нАдо. мне платят и ладно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 01:32 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
Мда, тяжела и неказиста жизнь простого программиста. Плохо иметь дремучее начальство. SubscribeOnDispatcher автоматичиски переводит результаты выполнения в UI поток ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 09:32 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
i, накидайте пример, с удовольствием посмотрю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 13:12 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
я уже накидывал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 14:53 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
i, да нифига это не рабочий код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 20:33 |
|
||
|
Асинхронность2Синхронность
|
|||
|---|---|---|---|
|
#18+
Там только наметки. Покажи код, сделаю рабочий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 22:25 |
|
||
|
|

start [/forum/topic.php?fid=21&msg=37106431&tid=1442454]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 258ms |
| total: | 424ms |

| 0 / 0 |
