C# 如何同时运行多个WebClient?

C# 如何同时运行多个WebClient?,c#,webclient,downloadstring,C#,Webclient,Downloadstring,这是我的密码 try { for (int i = 0; i < RichTextbox2.Lines.Length; i++) { var length = urlwebapi.Lines.Length; { WebClient f = new WebClient(); dynamic read = f.DownloadString(urlwebapi.Lines[(i % length)]

这是我的密码

try
{
    for (int i = 0; i < RichTextbox2.Lines.Length; i++)
    {
        var length = urlwebapi.Lines.Length;
        {
            WebClient f = new WebClient();
            dynamic read = f.DownloadString(urlwebapi.Lines[(i % length)] + RichTextbox2.Lines[i]);
            JObject o = JObject.Parse(read);            
        }
    }
}
catch (WebException e)
{
    MessageBox.Show(e.Message);
}

MessageBox.Show("done");                 

代码只能在urlwebapi中同时运行一个。当代码被执行时,我该如何获取,然后立即运行到5urlwebapi(example1.com直到example5.com),同时我建议使用httpClient。 这使它成为一个步行在公园。。使用后,您可以正确地处理这些问题

(伪代码)


下面是如何执行此操作的示例代码:

public async Task<string[]> DownloadStringsAsync(string[] urls)
    {
        var tasks = new Task<string>[urls.Length];
        for(int i=0; i<tasks.Length; i++)
        {
            tasks[i] = DownloadStringAsync(urls[i]);
        }
        return await Task.WhenAll(tasks);
    }

    public async Task<string> DownloadStringAsync(string url)
    {
        //validate!
        using(var client = new WebClient())
        {
            //optionally process and return
            return await client.DownloadStringTaskAsync(url)
                .ConfigureAwait(false);
        }
    }
公共异步任务下载StringsAsync(字符串[]URL)
{
var tasks=新任务[url.Length];

对于(int i=0;我看了一下。这应该可以帮助您处理多个请求。或者干脆
返回等待任务。whalll(url.Select(url=>DownloadStringAsync(url));
using (var client = new httpClient)
{
  //your logic, and you can keep using client in this context.
}
public async Task<string[]> DownloadStringsAsync(string[] urls)
    {
        var tasks = new Task<string>[urls.Length];
        for(int i=0; i<tasks.Length; i++)
        {
            tasks[i] = DownloadStringAsync(urls[i]);
        }
        return await Task.WhenAll(tasks);
    }

    public async Task<string> DownloadStringAsync(string url)
    {
        //validate!
        using(var client = new WebClient())
        {
            //optionally process and return
            return await client.DownloadStringTaskAsync(url)
                .ConfigureAwait(false);
        }
    }