Why does WebClien



我可以尝试从 url 获取字符串,但是当我做程序 GUI 时

冻结

如果你的目标是 .NET 4.5 之前,则没有 async/await - 相反,您可以使用DownloadStringAsync的异步版本,它在下载字符串时引发事件

var client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCompletedHandler);
for (long i = 1; i < gethow; i++)
{
string WebAdress = "https://xxxxxx.xxx/web?id=";
var request = WebAdress + (fromNumber - 1 + i);    
client.DownloadStringAsync(request);
}
// -- > Elsewhere in your form
void DownloadStringCompletedHandler(object sender, DownloadStringCompletedEventArgs e)
{
slas = "0" + Convert.ToString((fromNumber - 1 + i));
if (e.Result == "Test")
{
if (!listBox1.Items.Contains(slas))
{                
listBox1.Items.Add(slas);
godn++;
}
}
}

如果所有代码都必须在按钮单击中,则可以内联事件处理程序

var client = new WebClient();
client.DownloadStringCompleted += (s,e) => {
slas = "0" + Convert.ToString((fromNumber - 1 + i));
if (e.Result == "Test")
{
if (!listBox1.Items.Contains(slas))
{                
listBox1.Items.Add(slas);
godn++;
}
}
};
for (long i = 1; i < gethow; i++)
{
string WebAdress = "https://xxxxxx.xxx/web?id=";
var request = WebAdress + (fromNumber - 1 + i);    
client.DownloadStringAsync(request);
}

编辑:您已将问题中的代码更新为类似于此答案,但您假设DownloadStringAsync返回结果 - 它没有。该方法不返回任何内容。字符串在事件处理程序中返回

var client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCompletedHandler);
result=client.DownloadStringAsync(request); // <-- This line is wrong

它应该是

client.DownloadStringAsync(request);

并接收DownloadStringCompletedHandler内的字符串作为e.Result

相关内容

最新更新