C#如果超过2秒钟,如何停止方法?
以下程序将连接到网络并获取“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("https://msnbc.com/"); WebResponse Response = WebRequestObject.GetResponse(); Stream WebStream = Response.GetResponseStream(); StreamReader Reader = new StreamReader(WebStream); string webcontent = Reader.ReadToEnd(); MessageBox.Show(webcontent); } }
如上所述.Timeout
public void gethtml() { HttpWebRequest WebRequestObject = (HttpWebRequest)HttpWebRequest.Create("https://msnbc.com/"); WebRequestObject.Timeout = (System.Int32)TimeSpan.FromSeconds(2).TotalMilliseconds; try { WebResponse Response = WebRequestObject.GetResponse(); Stream WebStream = Response.GetResponseStream(); StreamReader Reader = new StreamReader(WebStream); string webcontent = Reader.ReadToEnd(); MessageBox.Show(webcontent); } catch (System.Net.WebException E) { MessageBox.Show("Fail"); } }
两秒钟太长,无法阻止UI。 如果您计划获得结果,例如50毫秒或更短,则应该只阻止UI。
阅读本文,了解如何在不阻止UI的情况下执行Web请求:
https://www.developerfusion.com/code/4654/asynchronous-httpwebrequest/
请注意,这在C#5中将更加容易,目前处于测试阶段。 在C#5中,您可以简单地使用await
运算符异步等待任务的结果。 如果你想看看这种东西在C#5中是如何工作的,请参阅:
https://msdn.microsoft.com/en-us/async
设置WebRequest
对象的Timeout
属性。 文档
MSDN示例:
// Create a new WebRequest Object to the mentioned URL. WebRequest myWebRequest=WebRequest.Create("https://www.contoso.com"); Console.WriteLine("nThe Timeout time of the request before setting is : {0} milliseconds",myWebRequest.Timeout); // Set the 'Timeout' property in Milliseconds. myWebRequest.Timeout=10000; // This request will throw a WebException if it reaches the timeout limit before it is able to fetch the resource. WebResponse myWebResponse=myWebRequest.GetResponse();
您可以在HttpWebRequest上使用TimeOut属性
考虑切换到内容的异步下载。 您将停止阻止UI线程,并且可以轻松处理多个请求。 您将能够在不影响UI的情况下显着增加超时,并且如果您仍想获取数据,则可以决定是否接收响应。
上述就是C#学习教程:C#如果超过2秒钟,如何停止方法?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/997266.html