Память на устройствах Windows Mobile ОЧЕНЬ тугая - работать с ней по-настоящему мучительно. Прежде всего, ваш общий объем памяти для процесса (если я правильно помню) 32 МБ. Теперь это заполняется не только выделением памяти в коде, но и загрузкой кода из DLL, EXE и т. Д.
Теперь, когда вы загружаете 500KB в байтовый массив, ему не нужно просто 500KB. Ей нужно 500 КБ НЕПРЕРЫВНОЙ ПАМЯТИ, что очень маловероятно найти после короткого запуска приложения.
Я рекомендую загружать файлы напрямую с помощью HttpRequest, а не через веб-службу. Может быть, веб-сервис может передать вам URL, который вам нужен, или что-то в этом роде. Но загрузите файл напрямую, и вы можете обработать его порциями - прочитать 8 КБ, затем записать эти 8 КБ на диск, затем прочитать еще 8 КБ и т. Д.