を使用しWebClient
てhtmlファイルをダウンロードしています:
private static string PullHTML(string url)
{
string data = null;
if (url != null)
{
if (!WebCache.TryGetValue(url, out data))
{
//THIS CODE IS REACHED
try
{
using (QuickWebClient wc = new QuickWebClient())
{
data = wc.DownloadString(url); //Debugging ends here
}
}
catch (WebException e)
{
//THIS CODE IS NEVER REACHED
Console.WriteLine(e.Message);
data = e.Message;
}
//NEITHER IS THIS
WebCache.Add(url, data);
}
}
return data;
}
private class QuickWebClient : WebClient
{
protected override WebRequest GetWebRequest(Uri uri)
{
WebRequest w = base.GetWebRequest(uri);
w.Timeout = 5 * 60 * 1000;
return w;
}
}
これは別のスレッドで実行されます(デバッグ目的でオーバーロードしましたが、問題は以前に始まりました)。さて、このコードは実行中のスレッドをクラッシュさせるように見えることがよくあります。スレッドは基本的に停止します。デバッガーは行に到達するとすぐに終了するため、デバッグできませんDownloadString
。F5を押したかのように動作します。例外はスローされません。スレッドは継続しません。何が起こっていますか?