public void Update()
    {
        if (download_successful_events.Count > 0)
        {
            DownloadSuccessfulEvent successfulEvent = download_successful_events.Dequeue();
            successfulEvent.Callback();
        }

        if (downLoad_error_events.Count > 0)
        {
            DownLoadErrorEvent errorEvent = downLoad_error_events.Dequeue();
            errorEvent.Callback();
        }

        OnUpdate();
    }
    public void DownLoadError(AssetDownInfo info, HttpDownLoadAsync loadAsync)
    {
        lock (LOCK_OBJ)
        {
            DownLoadErrorEvent errorEvent = new DownLoadErrorEvent(info);
            errorEvent.Event = (dio) =>
            {
                OnDownLoadError(dio);

                if (httpDownloadAsyncs.Contains(loadAsync))
                {
                    httpDownloadAsyncs.Remove(loadAsync);
                }
            };
            downLoad_error_events.Enqueue(errorEvent);
        }
    }