public DownloadTask StartDownload( string fileName, string url, ContentType contentType, FinishHandler finishHandler, TimeoutHandler timeoutHandler = null, float timeout = 60) { if (string.IsNullOrEmpty(fileName) || string.IsNullOrEmpty(url)) { return(null); } if (_currentTask != null && _currentTask.FileName == fileName) { return(_currentTask); } lock (_taskQueue) { foreach (var t in _taskQueue) { if (t.FileName == fileName) { return(t); } } var task = new DownloadTask( fileName, url, contentType, finishHandler, timeoutHandler, timeout); _taskQueue.Enqueue(task); MyLog.InfoWithFrame(name, string.Format("Start download: {0}", fileName)); return(task); } }
public void StopAllDownloadTask() { if (_currentTask != null) { _currentTask.Cancel(); _currentTask = null; } lock (_taskQueue) { while (_taskQueue.Count > 0) { var t = _taskQueue.Dequeue(); t.Cancel(); } _taskQueue.Clear(); } }
private void DownloadFinish(DownloadTask task) { if (task == null) { return; } var www = task.Downloader; if (www == null) { return; } if (!string.IsNullOrEmpty(www.error)) { MyLog.ErrorWithFrame(name, string.Format("Download failed! url: {0}, error: {1}", task.Url, www.error)); return; } try { var type = task.Type; if (type == ContentType.Image) { // 将下载的图片保存到路径中。 if (!www.texture) { return; } if (string.IsNullOrEmpty(task.FileName)) { return; } var bytes = www.texture.EncodeToPNG(); _filePicManager.SavePic(bytes, task.FileName); } else if (type == ContentType.Bytes) { if (!Directory.Exists(FilePath.BinaryFilePath())) { Directory.CreateDirectory(FilePath.BinaryFilePath()); } var path = FilePath.BinaryFilePath() + task.FileName; File.WriteAllBytes(path, www.bytes); } else if (type == ContentType.Text) { if (!Directory.Exists(FilePath.TextPath())) { Directory.CreateDirectory(FilePath.TextPath()); } var path = FilePath.TextPath() + task.FileName; File.WriteAllBytes(path, www.bytes); } MyLog.InfoWithFrame(name, string.Format("Finish download: {0}", task.FileName)); } catch (Exception e) { MyLog.ErrorWithFrame(name, e.Message); } }
protected bool Equals(DownloadTask other) { return(string.Equals(FileName, other.FileName)); }