C# WebClient.DownloadFileTaskAsync和File.Exists

C# WebClient.DownloadFileTaskAsync和File.Exists,c#,wpf,asynchronous,webclient,C#,Wpf,Asynchronous,Webclient,我正在使用以下代码下载文件并验证下载是否成功: try { UpdateAvailable = false; Downloading = true; using (var webclient = new WebClient { CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore) })

我正在使用以下代码下载文件并验证下载是否成功:

        try
        {
            UpdateAvailable = false;
            Downloading = true;

            using (var webclient = new WebClient { CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore) })
            {
                var file = Path.Combine(basePath, filename);
                await webclient.DownloadFileTaskAsync(updaterexe_fileurl, Path.Combine(basePath, updaterexe_filename));
                await webclient.DownloadFileTaskAsync(updatefileurl, file);
            }

            if (!File.Exists(filename))
            {
                Error = "Error downloading update. Please try again.";
                Log.Error("Error downloading update. Please try again (file does not exist).");
            }
            else
            {
                DownloadReady = true;
            }
        }
        catch (Exception ex)
        {
            Log.Error("Error downloading update: " + ex);
            Error = ex.Message;
        }
        finally
        {
            Downloading = false;
        }
这在大多数情况下都有效。但我从最终用户那里收到多份报告,有时他们会收到“重试”错误消息

这怎么可能呢?显然,WebClient没有抛出异常,但它也未能下载该文件(该文件在磁盘上不存在)

这是缓存问题吗?我是否缺少任何其他错误处理

如果是磁盘缓存问题,我考虑添加以下内容:

            int count = 0;
            while (count < 3 || !File.Exists(filename))
            {
                Thread.Sleep(1000);
                count++;
            }
int count=0;
while(count<3 | |!File.Exists(filename))
{
睡眠(1000);
计数++;
}
但这感觉很不舒服


有什么想法吗?

你可以下载到
文件,即
路径。组合(基本路径,文件名)
但你从不检查
文件是否存在,而是检查
文件名是否存在


如果
basePath
与当前工作目录不同,则文件“将不存在”。

我正在等待它,对吗?下载量约为8Mb。因此,如果没有等待,我应该得到更多的错误报告。@AkashKava
等待
做什么?下载到
文件
然后检查
文件名是否存在有什么意义?@ta.speot.真是个好主意!我认为最终用户在不同的启动位置运行该程序。谢谢对接得好,谢谢。接受(当我能够:p)是的,这绝对是个问题。同时,我还为另一个文件添加了一个检查:)非常感谢。