Всякий раз, когда вы загружаете столько данных на телефон , вы делаете это неправильно.Во-первых, проблема пропускной способности убьет ваше приложение.Во-вторых, проблема с памятью уже убила ваше приложение.В-третьих, проблема с процессором убьет ваше приложение.Вывод таков: ваш пользователь заканчивает тем, что убил ваше приложение.
Рекомендуемое решение: найдите способ категоризации данных, чтобы не все они загружались в телефон.Выполняйте обработку на сервере, на котором он находится (не на телефоне).
Если вы настаиваете на обработке такого количества данных на телефоне, сначала попробуйте управлять размером загрузки.Помните, что вы говорите о мобильном телефоне здесь, и не везде есть максимальные скорости 3G.Постарайтесь максимально сжать структуру данных (например, используя дерево для хранения общих префиксов).Также попробуйте заархивировать данные перед загрузкой.
Затем агрессивно посчитайте потребление памяти для каждого объекта.Ввод 20000 строк может легко потреблять много памяти.Вы хотели бы уменьшить размер использования памяти для каждого объекта, насколько это возможно.В вашем примере вы просто добавляете туда строки, поэтому я не могу догадаться, как бы вы израсходовали десятки МБ, допустимые в приложении WP7.Однако, если вы помещаете не просто строки, а большие объекты, считайте байты.
Кроме того, агрессивно управляйте фракционированием.Последнее, что вы хотите сделать, это new Dictionary()
затем dict.Add(x,y);
в цикле for.Когда внутреннее табличное пространство словаря заполняется, оно выделяется на новое место, а весь словарь копируется на новое место, тратя впустую исходное пространство.В итоге у вас будет много фрагментированного пространства памяти.Сделайте new Dictionary(20000)
или что-то еще, чтобы зарезервировать место первым за один раз.