c#300张图片的url,用多线程检测url是否有效
时间: 2023-12-03 12:45:26 浏览: 35
可以使用`HttpClient`类来检测URL是否有效,以下是一个示例代码:
```csharp
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static async Task Main(string[] args)
{
List<string> urls = new List<string>();
// 假设urls中存储了300张图片的URL
HttpClient httpClient = new HttpClient();
List<Task<string>> tasks = new List<Task<string>>();
foreach (string url in urls)
{
tasks.Add(CheckUrl(httpClient, url));
}
await Task.WhenAll(tasks);
foreach (Task<string> task in tasks)
{
if (task.Result == null)
{
Console.WriteLine("URL无效");
}
else
{
Console.WriteLine($"URL有效,返回状态码:{task.Result}");
}
}
Console.ReadLine();
}
static async Task<string> CheckUrl(HttpClient httpClient, string url)
{
try
{
HttpResponseMessage response = await httpClient.GetAsync(url);
return response.StatusCode.ToString();
}
catch (HttpRequestException)
{
return null;
}
}
}
}
```
这个代码使用了`HttpClient`类来发送HTTP请求,并使用`Task`和`async/await`来实现多线程。具体来说,它首先遍历了所有的URL,为每个URL创建了一个`Task`,并将这些`Task`添加到一个`List`中。然后,它使用`Task.WhenAll`方法等待所有的`Task`完成。最后,它遍历所有的`Task`,并输出它们的结果(即HTTP响应的状态码)。
需要注意的是,这个代码可能会因为并发量过大而导致服务器拒绝连接或返回错误码。在实际应用中,需要根据具体情况来调整代码,比如增加等待时间、限制并发数量等。