0

我从不同的地址下载了一堆字符串,我需要尽快下载它们。所以我使用 10 个 DownloadStringAsync 和 1 个 DownloadString。

简化的代码如下所示:

    ...
    foreach(...)
    {
        using (WebClient client = new WebClient())
        {
            if (asyncworkers < 10)
            {
                client.DownloadStringCompleted += Done;
                client.DownloadStringAsync(uri);
                asyncworkers++;
            }else{
                string data = client.DownloadString(uri);
                ProcessData(data);
            }
        }
    }
    ...


private void Done(...)
{
    ProcessData(e.Result);
    asyncworkers--;
}

问题是,有时e.ResultDone不完整。当我只使用DownloadString或者DownloadStringAsync然后它很可能总是完整的。这正常吗,我应该在它不完整的时候重新下载它还是我写错的方式?如果它是错误的,我将如何强迫它等到 10 个DownloadStringAsync完成它的工作?谢谢。

4

0 回答 0