KSFramework
KSFramework copied to clipboard
想问一下,为什么HttpWebRequest要自己算超时?
HttpWebRequest.Timeout是包含request.GetResponse()和response.GetResponseStream()的,我看你下载那边自己算超时,其实也是这2步的超时时间总和,并不是request.GetResponse()。
所以我有疑问,直接用HttpWebRequest自带的Timeout不行么?
你是指中KHttpDownloader.StartDownload从170开始代码块吗?
var MaxTime = TIME_OUT_DEF;
while (!isThreadFinish && !isThreadError)
{
timeCounter += Time.deltaTime;
if (timeCounter > MaxTime && !isThreadStart)
{
//#if !UNITY_IPHONE // TODO: 新的异步机制去暂停,Iphone 64不支持
// downloadThread.Abort();
//#endif
Debug.LogError(string.Format("[KHttpDownloader]下载线程超时!: {0}", fullUrl));
isThreadError = true;
break;
}
Progress = (downloadSize/(float) totalSize);
yield return null;
}
对的,就是这个
另外,我还碰到一个问题,多线程下载,只要超过2个线程同时运行,就必定会有至少一个HttpWebRequest超时或者等待时间很长,我这边是8秒以上,连带后面的一串任务(多线程并行)也等这么久。我用的.net4.x,DefaultConnectionLimit设置很大,httpWebRequest.Proxy也置空了,但是没作用。我不知道其它.net版本会不会影响,反正现在这问题好像无解。如果只用2个线程,问题虽然没了,但是下载速度会慢。