簡體   English   中英

代碼在過程中停止運行,沒有錯誤

[英]Code stops working in the middle of process with no errors

我有一個功能:

public bool urlExists(string url)
        {
            try
            {
                HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;

                request.Method = "HEAD";

                HttpWebResponse response = request.GetResponse() as HttpWebResponse;

                return (response.StatusCode == HttpStatusCode.OK);
            }
            catch (Exception ex)
            {
                Console.WriteLine("false");
                return false;
            }
        }

哪個檢查url是否存在。 我還有另一個下載文件的功能。

    public void downloadImages(string imgCode)
        {
    using (WebClient wc = new WebClient())
                {
                    try
                    {
                        if (urlExists("mydomain.com/images/" + imgCode + "/large.png"))
                        {
=                            wc.DownloadFile("mydomain.com/images/" + imgCode + "/large.png", "filepath" + imgCode + ".png");
                        }
                        if (urlExists("mydomain.com/images/" + imgCode + "/large.jpg"))
                        {
                            wc.DownloadFile("mydomain.com/images/" + imgCode + "/large.jpg", "filepath" + imgCode + ".jpg");
                        }
                        System.Threading.Thread.Sleep(1000);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
           }

我有一個“ imgCodes”列表,我這樣調用該函數:

for (int i = 0; i < imgCodes.Count; i++)
            {
                downloadImages(imgCodes[i]);
            }

該程序開始運行,但是在該過程的中間,它由於某種原因而停止並且存在該線程。 我嘗試添加一些行以找出問題所在,但我找不到。.但是我得到的最接近的結果是,它可能必須將某一種格式轉換為另一種格式。

例如,如果它下載png,而下一張圖片是jpg,則它將停止工作並存在該線程。 或者,如果下載的是jpb,而下一張圖片是png,則它將停止工作。

您無需處理響應,因此您永遠不會將連接返回到連接池-如果要從同一主機獲取多個圖像,則連接池將阻止您打開與該主機的更多連接,等待現有的要退貨的。 只要確保您處理響應:

using (var response = (HttpWebResponse) request.GetResponse())
{
    return response.StatusCode == HttpStatusCode.OK;
}

盡管我不得不說,對每個圖像提出兩個請求似乎毫無意義-一個只是檢查它是否存在,然后另一個來獲取實際數據。 我只是嘗試下載每個文件,並處理由於文件不存在而導致下載失敗的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM