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 ArrayList

filenameArr:ファイル名辞書配列

質問:</p>

1、httpでテレファイルの確認を数回要求すると、タスクが完了せず、すべてのスレッドが停止しました。

2、スレッド プール スレッドの数が特定の数に増加し、すべてのサブスレッド操作がメイン UI スレッドではなく、プログラム インターフェイスの低速化現象の場合

4

0 に答える 0