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 DownloadSuccessful(AssetDownInfo info, HttpDownLoadAsync loadAsync)
    {
        lock (LOCK_OBJ)
        {
            DownloadSuccessfulEvent successfulEvent = new DownloadSuccessfulEvent(info, loadAsync);
            successfulEvent.Event = (dif, la) =>
            {
                OnDownloadSuccessful(dif, la);

                if (httpDownloadAsyncs.Contains(loadAsync))
                {
                    httpDownloadAsyncs.Remove(loadAsync);
                }
            };

            download_successful_events.Enqueue(successfulEvent);
        }
    }