DownloadStringAsync. List<T> ничего не возвращает

274
19 апреля 2017, 10:10
public static List<string> GetFileNameModePack(string url)
{
    var list = new List<string>();
    var client = new WebClient();
    client.DownloadStringCompleted += (sender, e) =>
    {
        MatchCollection files = Regex.Matches(e.Result, @"(?<=<a href="")[^""]*", RegexOptions.IgnoreCase);
        for (int i = 0; i < files.Count; i++)
        {
            list.Add(files[i].Value);
        }
    };
    client.DownloadStringAsync(new Uri(url));
    return list;
}

Почему list всегда возвращает 0?

files не пуст и если в DownloadStringCompleted обращаться к конкретному индексу (пример: files[5].Value), то результат возвращает.

Answer 1

Разобрался.

public static async Task<List<string>> GetFileNameModePack(string url)
{
    var list = new List<string>();
    var client = new WebClient();
    Task<string> readFile = client.DownloadStringTaskAsync(new Uri(url));
    string result = await readFile;
    MatchCollection files = Regex.Matches(result, @"(?<=<a href="")[^""]*", RegexOptions.IgnoreCase);
    for (int i = 5; i < files.Count; i++)
    {
        list.Add(files[i].Value);
    }
    return list;
}

Единственное непонятно — почему если в папке по указанной ссылке большое количество файлов (> 500), то выбрасывает исключение System.Net.WebException: Запрос был прерван: Соединение было неожиданно закрыто.

Может кто-то знает? :)

READ ALSO
Сохранение текста в файл .doc в WPF

Сохранение текста в файл .doc в WPF

Здравствуйте, помогите пожалуйста, как реализовать сохранение текста из Textblock в файлdocx/doc???

563
Spreadsheetgear 2009. Как отключить копирование перетаскиванием мышкой.

Spreadsheetgear 2009. Как отключить копирование перетаскиванием мышкой.

Пользуюсь библиотекой Spreadsheetgear 2009Как отключить копирование перетаскиванием, нажатием левой кнопки мышки за точку в правом нижнем углу ячейки

225
Нет подключения к SQL Server

Нет подключения к SQL Server

Не могу понять в чем причинаНа моей машине подключение к серверу происходит на ура

308