zoukankan      html  css  js  c++  java
  • 多线程httpWebRequest

    //在初始化方法设置以下相关属性.              
                    //对象所允许的最大并发连接数//可在配置文件中设置
                    System.Net.ServicePointManager.DefaultConnectionLimit = 1000;
                    //是否使用 Nagle 不使用 提高效率 
                    System.Net.ServicePointManager.UseNagleAlgorithm = false;
                    //对象的最大空闲时间.(默认为100秒的)
                    System.Net.ServicePointManager.MaxServicePointIdleTime = 3600 * 1000;
    //-------------------------------------------------------------------------------------------
    //在 while循环中的处理..
     while (!worker.CancellationPending)
    {
                    request = WebRequest.Create(userUrl) as HttpWebRequest;
                     request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
                    request.Proxy = null;//
                    request.KeepAlive = true;
                    //数据是否缓冲 false 提高效率  
                    request.AllowWriteStreamBuffering = false;
    
                     Stream stream = null;
                    if (response.ContentEncoding.ToLower().Contains("gzip"))
                    {
                        stream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress);
                    }
                    else if (response.ContentEncoding.ToLower().Contains("deflate"))
                    {
                        stream = new DeflateStream(response.GetResponseStream(), CompressionMode.Decompress);
                    }
                    else
                    {
                        stream = response.GetResponseStream();
                    }
                    using (stream)
                    {
                        using (StreamReader sr = new StreamReader(stream, true))
                        {
                            string resultString = sr.ReadToEnd();
                        }
    
    //-------------------------------------------------------------------------------------------
    
    //使用完后要进行释放,否则易造成网络堵塞
                    if (request != null)
                    {
                        request.Abort();
                        request = null;
                    }
                    if (response != null)
                    {
                        response.Close();
                        response = null;
                    }
    }
    
    //在适当时间进行 强制垃圾回收.
    System.GC.Collect();
    
    //-------------------------------------------------------------------------------------------
    
    //以上是总结的关于多线程使用 HttpWebRequest 用于提高效率获取网页源代码的 相关设置. (省略了其他代码..)
  • 相关阅读:
    【WPF】自定义CheckBox复选框
    如何在WPF中引用Windows.System.Forms.Integration
    【转载】wpf DataGrid自动显示行号
    C#网络编程(订立协议和发送文件) Part.4
    C#网络编程(接收文件) Part.5
    状态模式
    C#网络编程(同步传输字符串) Part.2
    我的一个自己写的更新缓存的aop实例
    C#网络编程(基本概念和操作) Part.1
    mssql根据分类查询每个分类前100条数据 表名m_data,分类字段名m_type
  • 原文地址:https://www.cnblogs.com/rexfieBlogs/p/6020284.html
Copyright © 2011-2022 走看看