| System/AssetVersion/InGameDownLoad.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/AssetVersion/RemoteFile.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
System/AssetVersion/InGameDownLoad.cs
@@ -15,8 +15,6 @@ List<AssetVersion> tasks = new List<AssetVersion>(); public bool inGameDownLoadAllow = false; public float progress { get { @@ -240,7 +238,6 @@ } } int workingQueueMaxCount = 1; IEnumerator Co_StartDownLoad() { @@ -249,18 +246,14 @@ workingQueue.Clear(); okCount = 0; var downLoadTasksQueues = new Queue<AssetVersion>(); for (int i = 0; i < tasks.Count; i++) { var assetVersion = tasks[i]; if (!assetVersion.localValid) { var remoteURL = StringUtility.Contact(VersionUtility.Instance.versionInfo.GetResourcesURL(VersionConfig.Get().branch), "/", assetVersion.relativePath); var localURL = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, assetVersion.relativePath); var remoteFile = new RemoteFile(); workingQueue.Add(remoteFile); remoteFile.Init(remoteURL, localURL, assetVersion, true); remoteFile.Begin(OnFileDownLoadCompleted); downLoadTasksQueues.Enqueue(assetVersion); } else { @@ -270,6 +263,17 @@ while (okCount < totalCount) { while (workingQueue.Count < 2 && downLoadTasksQueues.Count > 0) { var assetVersion = downLoadTasksQueues.Dequeue(); var remoteURL = StringUtility.Contact(VersionUtility.Instance.versionInfo.GetResourcesURL(VersionConfig.Get().branch), "/", assetVersion.relativePath); var localURL = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, assetVersion.relativePath); var remoteFile = new RemoteFile(); workingQueue.Add(remoteFile); remoteFile.Init(remoteURL, localURL, assetVersion, true); remoteFile.Begin(OnFileDownLoadCompleted); } yield return null; } @@ -307,6 +311,15 @@ private void OnFileDownLoadCompleted(bool _ok, AssetVersion _assetVersion) { foreach (var remote in workingQueue) { if (remote.assetVersion == _assetVersion) { workingQueue.Remove(remote); break; } } if (_ok) { okCount++; System/AssetVersion/RemoteFile.cs
@@ -72,7 +72,7 @@ } } AssetVersion assetVersion; public AssetVersion assetVersion { get; private set; } protected string mRemoteFile; protected string localFile; bool speedLimit = false; @@ -123,6 +123,7 @@ public static void Prepare() { gDownloadIsRunningCount = 0; gStartTickcount = System.Environment.TickCount; TotalDownloadedSize = 0L; downloadSpeedRef = 0f; @@ -153,50 +154,57 @@ } stop = true; if (headRequest != null) try { headRequest.Abort(); headRequest = null; if (headRequest != null) { headRequest.Abort(); headRequest = null; } if (headResponse != null) { headResponse.Close(); headResponse = null; } if (fileRequest != null) { fileRequest.Abort(); fileRequest = null; } if (fileResponse != null) { fileResponse.Close(); fileResponse = null; } if (fs != null) { fs.Flush(); fs.Close(); fs = null; } if (inStream != null) { inStream.Close(); inStream = null; } } if (headResponse != null) catch (Exception ex) { headResponse.Close(); headResponse = null; Debug.Log(ex); } if (fileRequest != null) finally { fileRequest.Abort(); fileRequest = null; } if (fileResponse != null) { fileResponse.Close(); fileResponse = null; } if (fs != null) { fs.Flush(); fs.Close(); fs = null; } if (inStream != null) { inStream.Close(); inStream = null; } onCompleted = null; mHadError = false; if (state == State.Working) { gDownloadIsRunningCount--; onCompleted = null; mHadError = false; if (state == State.Working) { gDownloadIsRunningCount--; } } } @@ -324,7 +332,11 @@ headResponse.Close(); headResponse = null; } headRequest.Abort(); if (headRequest != null) { headRequest.Abort(); headRequest = null; } } }, headRequest); @@ -373,7 +385,12 @@ if (mHadError) { DebugEx.LogWarningFormat("获取远程文件{0} 信息失败!", mRemoteFile); headRequest.Abort(); if (headRequest != null) { headRequest.Abort(); headRequest = null; } done = true; gDownloadIsRunningCount--; yield break;