Да и нет.
Безопасность потоков - это нечто большее, чем просто обеспечение доступа к вашим общим данным только одним потоком за раз. Вы должны обеспечить последовательный доступ к общим данным, в то же время избегая условий гонки , взаимоблокировок , живых блокировок и истощения ресурсов . .
Непредсказуемые результаты при работе нескольких потоков не являются обязательным условием потокобезопасного кода, но часто являются побочным продуктом. Например, у вас может быть схема производитель-потребитель , настроенная с общей очередью, одним потоком производителя и несколькими потоками-потребителями, и поток данных может быть совершенно предсказуемым. Если вы начнете представлять больше потребителей, вы увидите больше случайных результатов.
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
, чтобы он работал и для них.
Самый простой способ - использовать класс WebClient:
using(WebClient client = new WebClient())
{
string contents = client.DownloadString(uri);
}