C# 为什么你会这样做

C# 为什么你会这样做,c#,.net-3.5,C#,.net 3.5,我可以尝试从url获取字符串,但当我这样做时,如果您的目标是.NET 4.5之前的版本,那么我的程序GUI将冻结,没有async/await-相反,您可以使用异步版本的DownloadStringAsync,它在下载字符串时引发事件 var client = new WebClient(); client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCompletedHandle

我可以尝试从url获取字符串,但当我这样做时,如果您的目标是.NET 4.5之前的版本,那么我的程序GUI将冻结,没有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++;
         }
    }
}
应该是

client.DownloadStringAsync(request);

并以
e.Result

的形式接收
DownloadStringCompletedHandler
中的字符串。您针对的是.NET的哪个版本?它会冻结,因为WebClient是同步的,所以它会阻止整个循环。i使用.NET 3.5,那么–Fran我必须做什么?最简单的方法是将代码放到后台工作中,使其异步运行。此外,在您的问题中出现
MyIrancell BruteForce[Status:Attacking]
,这有点令人怀疑!很好,但我不喜欢使用class(所有的作品都必须放在按钮内)@Pwn3rGamer,我担心这个评论毫无意义。什么意思?我说的课堂是指你的形式!结果如何?结果里面的结果必须是从URL下载的字符串所有作品必须在按钮里面我闻到(重)UI代码中的逻辑@Pwn3rGamer您应该将代码带到另一个类中,并在单击按钮时调用它。。。直接在按钮单击的eventhandler中写入逻辑不好
s
是事件的发送者(可能是webclient实例)
e
是包含响应信息的事件参数(在本例中是下载的结果)
var client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCompletedHandler);
result=client.DownloadStringAsync(request); // <-- This line is wrong
client.DownloadStringAsync(request);