[英]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.