@dlysenko1311

Возникает ошибка outOfMemory, как исправить?

Написал скрипт, который делает запрос к апи, потом скачивает и обрабатывает файл, который содержит данные за определенный промежуток времени. Если я в параметры ссылки передаю большое промежуток времени, то получаю ошибку: outOfMemory
Как это можно исправить?

Сам скрипт выглядит так:
// создаем переменные
string baseurl = Variables.baseurl;
string start_date = Variables.startdate;
string OAuth = Variables.OAuth;
string ids = Variables.ids;
string end_date = DateTime.Today.ToString("yyyy-MM-dd");
string url = $"{baseurl}application_id={ids}&date_since={start_date}&date_until={end_date}";



// делаем запрос к апи
var request = WebRequest.Create(url);
request.Method = "GET";
request.Headers.Add("Authorization", OAuth);
var response = (HttpWebResponse)request.GetResponse();
var ResponseStatusCode = (int)response.StatusCode;
var webStream = request.GetResponse().GetResponseStream();
var reader = new System.IO.StreamReader(webStream);


// получаю перемнную data 
var data = reader.ReadToEnd();  // здесь и происходит ошибка так как, если я скачиваю файл за большой промежуток времени, то в файле может быть больше 10 млн строк. 



// обрабатываю скаченный файл и отдаю в Output0Buffer строки
var jobject = JObject.Parse(data)["data"];
foreach (var obj in jobject)
{
    
    Output0Buffer.AddRow();
    Output0Buffer.eventdatetime = (DateTime)obj["event_datetime"]; 
    Output0Buffer.eventname = (string)obj["event_name"];
    Output0Buffer.appmetricadeviceid = (string)obj["appmetrica_device_id"].ToString();
    Output0Buffer.city = (string)obj["city"];
    Output0Buffer.devicetype = (string)obj["device_type"];
 }


сама ошибка выглядит так:
63c59911e0aa5650892785.png
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
@KingstonKMS
Читать построчно, как в примере из документации
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы