0
void test()     //apply multithreading
    {
        ThreadPool.SetMaxThreads(int.Parse(TxtThread.Text), int.Parse(TxtThread.Text) + 10);
        foreach (string url in list_url)
        {
            ThreadPool.QueueUserWorkItem(new WaitCallback(CheckFile), url);
        }
    }

void CheckFile(object url)  //incoming url to check files exists or not
{
    HttpWebResponse response = null;
    foreach (string str in filenameArr)
    {
        try
        {
            string strUrlFile2 = UriFile(url.ToString(), str);
            response = Com.WebResponse(strUrlFile2);
            if (response.StatusCode == HttpStatusCode.OK && response.ContentType.ToLower() != "text/html")
                {

                }
        }
        catch (Exception ex)
        {
        }
        finally
        {
            if (response != null)
            {
                response.Close();
            }
        }
    }
}


public static HttpWebResponse WebResponse(string strUrlFile)    //check method
        {
            HttpWebRequest req = null;
            try
            {
                //System.GC.Collect();
                req = (HttpWebRequest)WebRequest.Create(strUrlFile);
                req.Method = "HEAD";
                req.Timeout = 100;
                req.ProtocolVersion = HttpVersion.Version11;
                req.AllowAutoRedirect = false;
                req.Accept = "*/*";
                req.KeepAlive = false;
                HttpWebResponse res = (HttpWebResponse)req.GetResponse();
                return res;
            }
            catch (Exception)
            {
                return null;
            }
        }

list_url:url 数组列表

filenameArr:文件名字典数组

问题:</p>

1、过了一会儿,http请求检查telefile几次,任务没有完成,所有线程都停止了。

2、当线程池线程数增长到一定数量,且所有子线程操作的不是主UI线程,而是程序界面慢的现象

4

0 回答 0