下面的程序将连接到网络并获取“msnbc.com”网页的html内容并打印结果。如果从网页获取数据的时间超过 2 秒,我希望我的方法停止工作并返回。您能举个例子告诉我如何做到这一点吗?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
gethtml();
MessageBox.Show("End of program");
}
public void gethtml()
{
HttpWebRequest WebRequestObject = (HttpWebRequest)HttpWebRequest.Create("http://msnbc.com/");
WebResponse Response = WebRequestObject.GetResponse();
Stream WebStream = Response.GetResponseStream();
StreamReader Reader = new StreamReader(WebStream);
string webcontent = Reader.ReadToEnd();
MessageBox.Show(webcontent);
}
}
两秒是太长了阻止 UI。仅当您计划获取结果(例如 50 毫秒或更短时间)时,才应阻止 UI。
阅读这篇文章,了解如何在不阻塞 UI 的情况下执行 Web 请求:
http://www.developerfusion.com/code/4654/asynchronous-httpwebrequest/ http://www.developerfusion.com/code/4654/asynchronous-httpwebrequest/
请注意,这一切在 C# 5 中都会容易得多,目前 C# 5 还处于测试版本。在 C# 5 中,您可以简单地使用await
操作符异步等待任务的结果。如果您想了解此类事情在 C# 5 中如何工作,请参阅:
http://msdn.microsoft.com/en-us/async http://msdn.microsoft.com/en-us/async
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)