Csharp/C#教程:C#如果超过2秒钟,如何停止方法?分享


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

(0)
上一篇 2021年12月26日
下一篇 2021年12月26日

精彩推荐