фоновая задача в Windows Phone 8.1 имеет ограниченную память 40 МБ. Для загрузки мультимедиа на сервер или связанных с этим задач 40 МБ — это гораздо меньше.
Например: я вызываю приведенную ниже функцию из метода RUN TimerTriggerTask.
private async void AccessMediaUpload()
{
try
{
// SavedPictures can be used for working with emulators
StorageFolder picfolder = KnownFolders.CameraRoll;
var x = await picfolder.GetFilesAsync();
var enumerator = x.GetEnumerator();
Debug.WriteLine("Number of files are: " + x.Count);
while (enumerator.MoveNext())
{
var file = enumerator.Current;
// Setup the the uploader with the name of the file
var uploader = new BackgroundUploader();
uploader.SetRequestHeader("Filename", file.Name);
// Start the upload
UploadOperation upload = uploader.CreateUpload(uri, file);
await upload.StartAsync();
// Get the HTTP response to see the upload result
ResponseInformation response = upload.GetResponseInformation();
if (response.StatusCode == 200)
{
Debug.WriteLine(file.Name + " Uplaoded");
}
//Debug.WriteLine("HTTP Status Code:" + response.StatusCode);
}
_deferral.Complete();
}
catch (OutOfMemoryException e)
{
Debug.WriteLine(e.Message);
}
}
Если у меня есть около 10 изображений для загрузки, оно исчезает после 4 изображений из-за OutOfMemoryException.
Есть ли способ обрабатывать память здесь? Обратите внимание, что я использую сетевой API фоновой передачи, который сам выполняет все фрагменты файлов.