欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity中使用C#的WebClient的DownloadFileAsync异步回调不执行

程序员文章站 2022-05-06 17:15:32
...

在开发时遇到了一个很奇怪的问题,使用WebClient来异步下载远程资源,并且使用了WebClient的两个异步回调方法DownloadProgressChanged和DownloadFileCompleted。在Unity编辑器中,两个异步回调方法可以正常执行,当打包后发现,两个异步回调方法根本不会执行,比较神奇的是远程文件居然下载了下来。

通过无数次踩坑,发现是.net版本影响的。见下图:

Unity中使用C#的WebClient的DownloadFileAsync异步回调不执行

代码如下:

        void Start()
        {
            downloader = new Downloader(assetName, downloadUrl, savePath);
            downloadBtn.onClick.AddListener(DownlodClick);
        }

        private void DownlodClick()
        {
            downloader.DownloadFileAsync(progress => { }, status =>
            {
                var result = (Downloader.DownloadResult)status;
                Debug.Log("download status:" + result);
            });
        }

        private WebClient client;
        private Action<float> progressHandler;