using Cysharp.Threading.Tasks;
using UnityGameFramework.Runtime;
using DownloadFailureEventArgs = UnityGameFramework.Runtime.DownloadFailureEventArgs;
using DownloadSuccessEventArgs = UnityGameFramework.Runtime.DownloadSuccessEventArgs;
namespace SepCore.AsyncTask
{
///
/// Download 异步扩展方法
///
public static class DownloadAsyncExtension
{
///
/// 异步下载文件
///
/// 下载组件
/// 下载地址
/// 下载后存放路径
/// 用户自定义数据
/// 超时时间(秒),0表示不超时
/// 下载成功事件
public static UniTask DownloadFileAsync(this DownloadComponent downloadComponent,
string downloadUri,
string downloadPath,
object userData = null,
float timeout = 300f)
{
int serialId = 0;
UniTask waitTask = AsyncTaskHelper.WaitSuccessOrFailureAsync(
DownloadSuccessEventArgs.EventId,
DownloadFailureEventArgs.EventId,
successArgs => successArgs.SerialId == serialId,
failureArgs => failureArgs.SerialId == serialId,
timeout
);
serialId = downloadComponent.AddDownload(downloadPath, downloadUri, userData);
return waitTask;
}
///
/// 异步下载文件(简化版本)
///
/// 下载组件
/// 下载地址
/// 下载后存放路径
/// 超时时间(秒),0表示不超时
/// 下载成功事件
public static UniTask DownloadFileAsync(this DownloadComponent downloadComponent,
string downloadUri,
string downloadPath,
float timeout = 300f)
{
return DownloadFileAsync(downloadComponent, downloadUri, downloadPath, null, timeout);
}
}
}