Как решить проблему с (возможно) переполнением памяти?

Здравствуйте.

У меня имеется некоторый массив строк (состоящий из англоязычных слов), полученный следующим образом:
string stringFromBook = "...Здесь разные англоязычные слова (разделенные пробелами) из некоторой книги...";
string[] words = stringFromBook.Split(' '); //Превращаю строку в массив

Я осуществляю поочередное извлечение элементов из массива "words" (в которых содержаться некоторые англ. слова) и далее, при помощи метода:
static string GetTranscriptionFromYandexTranslator(string englishWord) {...} //Тело метода приведено ниже

получаю транскрипции этих англ. слов из Яндекс-переводчика.
После этого, полученные транскрипции, вместе с оригинальными англ. словами, построчно вывожу в консоль:
Console.WriteLine(transcripAndWord);

И всё работает нормально, за исключением того, что в консоль выводиться только 29 срок с транскрипциями (то есть в консоль выводиться только 29 элементов массива, при том, что в массиве всего около 50-ти элементов), а после программа останавливается и выдается сообщение:
"Необработанное исключение типа "System.ArgumentOutOfRangeException" в mscorlib.dll
Дополнительные сведения: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции."

Когда же я в строке программы:
string stringFromBook = "...Здесь разные англоязычные слова (разделенные пробелами) из некоторой книги...";

ввел (для пробы) некоторую другую строку (с другими англ. словами), то максимальное количество выведенных в консоль элементов массива (англ. слов с транскрипциями) уменьшилось до 24 (а было 29).

P.S. У меня имеется предположение, что это может быть как-то связано с переполнением памяти. Возможно сами транскрипции "много весят". Но это все мои догадки, я точно не знаю.

С чем связана эта проблема, и/или как её решить?

Используемый мною программный код:
class Program
    {

        //Метод получения транскрипции через API Яндекс-переводчика
        static string GetTranscriptionFromYandexTranslator(string englishWord)
        {
            string transcription;

            var translateUrl = "https://dictionary.yandex.net/dicservice.json/lookup?ui=ru&text=" + englishWord + "&lang=en-ru&flags=23";

            using (var wc = new WebClient())
            {
                wc.Encoding = Encoding.UTF8;
                var resultHtml = wc.DownloadString(translateUrl);
                dynamic trsJson = JObject.Parse(resultHtml);

                var trs = trsJson.def[0].ts;
                transcription = trs;
            }
            return transcription;
        }


        static void Main(string[] args)
        {
           string stringFromBook = "...Здесь разные англоязычные слова (разделенные пробелами) из некоторой книги...";

            string[] words = stringFromBook.Split(' ');

            string transcripAndWord, transcription;

            for (int i = 0; i < words.Length; i++)
            {
                    transcription = GetTranscriptionFromYandexTranslator(words[i]);

                    transcripAndWord = words[i] + " [" + transcription + "]";
     
                    Console.WriteLine(transcripAndWord); 
            }
           Console.ReadLine();
        }
    }
  • Вопрос задан
  • 653 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы