我有一个名为DownloadFileAsync(url, Func<RemoteFileResponse, Task> onDownloadFinished)
的方法,它执行以下操作:
这对我来说很脏,因为我需要在后台线程上执行下载但是我无法等待它,因为我希望能够立即返回缓存文件。问题是,如果我这样做,我将丢失任何异常上下文。
我能想到的一些选择:
想知道是否有人对我如何做到这一点有任何其他建议?
我的方法的伪代码:
Task<IFile> async DownloadFileAsync(url, Func<RemoteFileResponse, Task> onDownloadFinished)
{
var cache = await CheckCacheAsync(url);
// don't await this so the callee can use the cached file right away
// instead return the download result on the download finished callback
DownloadUrlAndUpdateCache(url, onDownloadFinished);
return cache
}