2013-04-16 3 views
-2

Я разрабатываю приложение Windows 8 с использованием C# и XAML, где у меня есть огромное количество данных, которые я получаю на одной странице. Следовательно, приложение занимает много времени для загрузки, так как ему нужно подождать, пока все данные не будут представлены, а затем отобразит их для пользователей.Как асинхронно извлекать данные из нескольких источников?

Что я хочу в основном состоит в следующем: у моего Gridview есть до 15 групп, и каждая группа имеет около 10 плиток. В настоящее время мне нужно подождать до тех пор, пока все данные не загрузятся, а затем отобразит все группы, которые занимают много времени, так как каждая группа имеет в дополнение к своим фрагментам некоторые RSS-каналы для извлечения и анализа. Таким образом, есть способ показать группы постепенно, так что когда группа 1 заканчивает загрузку, она показывает, что добавляется group2, ect ... \ Надеюсь, теперь вопрос яснее. Спасибо заранее!

ответ

1

Этот quenstion настолько расплывчатый, но основы говорят, что вы должны использовать своего рода оператора скобки с обратным вызовом, который позволяет вам знать, когда работа будет готова, или в этом случае, когда данные были извлечены из источник. Вы можете использовать потоки для этого, но, возможно, это будет немного сложнее.

Посмотрите здесь:

http://elegantcode.com/2009/07/03/wpf-multithreading-using-the-backgroundworker-and-reporting-the-progress-to-the-ui/

Вы также можете использовать новый асинхр/ждут ключевых слов, что делает его extremmally легко:

http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx

Так что у вас есть несколько фоновые рабочие процессы продолжаются, вы можете проверить после завершения каждого из них, используя некоторый счетчик, чтобы проверить, завершены ли все фоновые процессы и обновлен ли пользовательский интерфейс.

1

Вы можете использовать Задачи для извлечения данных прочь в потоке пользовательского интерфейса и обновления пользовательского интерфейса с помощью диспетчера, как данные поступают в систему.

http://msdn.microsoft.com/en-ca/library/dd537609.aspx

Задачи просты для создания и использования.

var task = new Task(() => Console.WriteLine("Running a task.")); 
task.Start(); 
Смежные вопросы