gpt4 book ai didi

c# - WebRequest 挂起用户界面

转载 作者:行者123 更新时间:2023-11-30 18:55:03 27 4
gpt4 key购买 nike

我正在使用 WebRequest 执行简单请求,应用程序只是挂起,直到响应返回。我该如何解决这个问题?

看了很多题目,都说要用线程。我不知道如何使用它们;任何人都可以提供以下不挂起用户界面的示例吗?

private string SimpleRequest(String url)
{
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
string result = reader.ReadToEnd();
stream.Dispose();
reader.Dispose();
return result;
}

private void button1_Click(object sender, EventArgs e)
{
String googleHtml = simpleRequest("https://facebook.com");
}

谢谢!

最佳答案

如果你使用的是 c# 5.0,那就太简单了

public async void Test1()
{
WebClient wc = new WebClient();
richTextBox1.Text = await wc.DownloadStringTaskAsync("https://facebook.com");
}

您也可以将您的方法转换为awaitable

private Task<string> simpleRequest(String url)
{
return Task.Factory.StartNew(() =>
{
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
string result = reader.ReadToEnd();
stream.Dispose();
reader.Dispose();
return result;
});
}

并调用为

public async void Test2()
{
richTextBox1.Text = await simpleRequest("https://facebook.com");
}

对于较低版本的 C#,请参阅其他答案。

关于c# - WebRequest 挂起用户界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12131758/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com