Существует ли простой способ открыть Uri и добраться независимо от того, что он указывает на? (C#)

Да и нет.

Безопасность потоков - это нечто большее, чем просто обеспечение доступа к вашим общим данным только одним потоком за раз. Вы должны обеспечить последовательный доступ к общим данным, в то же время избегая условий гонки , взаимоблокировок , живых блокировок и истощения ресурсов . .

Непредсказуемые результаты при работе нескольких потоков не являются обязательным условием потокобезопасного кода, но часто являются побочным продуктом. Например, у вас может быть схема производитель-потребитель , настроенная с общей очередью, одним потоком производителя и несколькими потоками-потребителями, и поток данных может быть совершенно предсказуемым. Если вы начнете представлять больше потребителей, вы увидите больше случайных результатов.

8
задан Matthew Scharley 1 July 2009 в 10:39
поделиться

2 ответа

static string GetContents(Uri uri) {
    using (var response = WebRequest.Create(uri).GetResponse())
    using (var stream = response.GetResponseStream())
    using (var reader = new StreamReader(stream))
        return reader.ReadToEnd();
}

Это не будет работать для независимо от . По умолчанию он работает для file: // , http: // и https: // и ftp: // . Однако вы можете зарегистрировать пользовательские обработчики URI с помощью WebRequest.RegisterPrefix , чтобы он работал и для них.

11
ответ дан 5 December 2019 в 10:43
поделиться

Самый простой способ - использовать класс WebClient:

using(WebClient client = new WebClient())
{
    string contents = client.DownloadString(uri);
}
5
ответ дан 5 December 2019 в 10:43
поделиться
Другие вопросы по тегам:

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