当前位置:编程学习 > C#/ASP.NET >>

多线程采集到一定数据量卡住不动,贴代码求助大神

                
foreach (string url in queue) //遍历,线程池
{
   ThreadPool.QueueUserWorkItem(new WaitCallback(CheckFile), url);
}


        void CheckFile(object url)  //数据传入
        {
            foreach (string str in filenameArr)
            {
                try
                {
                    string strUrlFile2 = UriFile(url.ToString(), str);
                    toollblUrl.Text = strUrlFile2;
                    HttpWebResponse response = Com.WebResponse(strUrlFile2);
                    if (response.StatusCode == HttpStatusCode.OK && response.ContentLength > int.Parse(txtSize.Text) * 1024 && response.ContentType.ToLower() != "text/html")
                    {
                        txtResult.Text += response.ResponseUri + response.Server + response.Method + response.StatusCode + response.ContentLength + "\r\n";
                        File.AppendAllText(path + "Data\\success.txt", DateTime.Now + "\t" + response.ResponseUri + "\t" + response.ContentLength.ToString() + "\r\n");
                        
                    }
                }
                catch (Exception ex)
                {
                    //textBox2.Text += ex.Message + "\r\n";
                }

}

        public static HttpWebResponse WebResponse(string strUrlFile)
        {
            try
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrlFile);
                req.Method = "HEAD";
                req.Timeout = 3000;
                req.ProtocolVersion = HttpVersion.Version11;
                req.AllowAutoRedirect = false;
                req.Accept = "*/*";
                HttpWebResponse res = (HttpWebResponse)req.GetResponse();
                return res;
            }
            catch (Exception)
            {
            }
            return null;
        }
多线程 url --------------------编程问答-------------------- 那边双江的新闻还没看完,帮顶先 --------------------编程问答--------------------
引用 1 楼 puler 的回复:
那边双江的新闻还没看完,帮顶先
 李双江又被儿子坑了 --------------------编程问答-------------------- 看看内存和cpu的使用情况呗 --------------------编程问答--------------------
引用 3 楼 tiana0 的回复:
看看内存和cpu的使用情况呗

内存和cpu使用率还有很多富裕 --------------------编程问答-------------------- 求助大牛神一般的回复 --------------------编程问答-------------------- 你这个取不别人的数据
你的IP不断去访问服务器,
别人服务器是不是做了限制的,
你往这方面去查下 --------------------编程问答--------------------
引用 6 楼 lzxue1989 的回复:
你这个取不别人的数据
你的IP不断去访问服务器,
别人服务器是不是做了限制的,
你往这方面去查下

但是我不是设置timeout了吗 --------------------编程问答--------------------
引用 7 楼 yeweit6 的回复:
引用 6 楼 lzxue1989 的回复:
你这个取不别人的数据
你的IP不断去访问服务器,
别人服务器是不是做了限制的,
你往这方面去查下
但是我不是设置timeout了吗

如果别人服务器把你的ip屏蔽了,
你通过浏览器来打开其网址都打不开的,
你怎么可能取到数据呢,
只要卡起不动了,你就断点进去看看,
是不是没有取数据
--------------------编程问答--------------------
引用 8 楼 lzxue1989 的回复:
引用 7 楼 yeweit6 的回复:引用 6 楼 lzxue1989 的回复:
你这个取不别人的数据
你的IP不断去访问服务器,
别人服务器是不是做了限制的,
你往这方面去查下
但是我不是设置timeout了吗
如果别人服务器把你的ip屏蔽了,
你通过浏览器来打开其网址都打不开的,
你怎么可能取到数据呢,
只要卡起不动了,你就断点进去看看,
是不是没……

如果是这样的话,timeout没有效的话,应该怎么办呢 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- queue 里面是不是太多了。你这种写法有问题的。
foreach (string url in queue) //遍历,线程池
{
   ThreadPool.QueueUserWorkItem(new WaitCallback(CheckFile), url);
}
  --------------------编程问答--------------------
引用 11 楼 wonderfuly 的回复:
queue 里面是不是太多了。你这种写法有问题的。
foreach (string url in queue) //遍历,线程池
{
   ThreadPool.QueueUserWorkItem(new WaitCallback(CheckFile), url);
}

queue有那应该在什么控制范围呢
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,