存在或不存在多线程检查远程文件的性能问题

时间:2013-03-02 16:52:54

标签: c#

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 ArrayList

filenameArr:filename字典数组

问题:

1,过了一段时间,当httprequesting多次检查telefile时,任务没有完成。所有线程都停止了。

2,当线程池线程数增长到一定数量时,所有子线程操作都不是主UI线程,但是程序界面缓慢现象

0 个答案:

没有答案