0

我有如下方法来获取远程 URL 字符串。

public string FnGetURLContent(string _QsURL)
        { 
            string _Return = "";

            try
            {    
                HttpWebRequest _HttpWebRequest = (HttpWebRequest)WebRequest.Create(_QsURL);
                _HttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)";

                _HttpWebRequest.MaximumAutomaticRedirections = 4;
                _HttpWebRequest.MaximumResponseHeadersLength = 4;

                _HttpWebRequest.Credentials = CredentialCache.DefaultCredentials;
                HttpWebResponse _HttpWebResponse = (HttpWebResponse)_HttpWebRequest.GetResponse();

                Stream receiveStream = _HttpWebResponse.GetResponseStream();

                encoding format. 
                StreamReader _StreamReader = new StreamReader(receiveStream, Encoding.UTF8);

                _Return = _StreamReader.ReadToEnd();
                _HttpWebResponse.Close();
                _StreamReader.Close();

            }
            catch (WebException _WebException)
            {
                _Return = "";
            }

            return _Return;

        }

当方法运行时,表单 UI 会冻结,直到方法完成处理。我该如何改进代码?

先感谢您

4

4 回答 4

2

您可以使用异步后台工作程序“改进代码” 。在这里查看课程

于 2013-03-25T13:36:49.987 回答
2

您可以使用 _HttpWebRequest.GetResponseAsync() 并在收到响应数据后在单独的线程上处理它。

于 2013-03-25T13:39:21.187 回答
0

有很多方法可以做到这一点。你可以这样做:

  1. 您可以使用 .net 4.5 ( Link )附带的关键字:async 和 await
  2. 您可以使用 Background-Worker ( Link )
  3. 您可以开始一个新线程(链接

还有更多方法可以实现您的目标

于 2013-03-25T13:39:39.360 回答
0

这就是 node.js 的人生目的。关键是使这个异步。对于您的情况,请参阅此处的 msdn 文档。

于 2013-03-25T13:41:01.327 回答