【问题标题】:C# process cannot access file because it is being used by another processC# 进程无法访问文件,因为它正被另一个进程使用
【发布时间】:2011-07-05 15:47:41
【问题描述】:

我正在用 C# 为 XML 文件编写一个导入器。每次运行导入时,我都需要从 URL 下载 XML 文件。

我已经编写了以下代码来下载它:

var xmlPath = @"C:\Desktop\xxx.xml";
public void DownloadFile(string url, string saveAs)
{
    using(var webClient = new WebClient())
    {
        webClient.DownloadFileAsync(new Uri(url), saveAs);
    }
}

_downloader.DownloadFile(Config.FeedUrl, xmlPath); 调用该方法。网址在配置文件中 (Config.FeedUrl)。

然后,当我尝试GetProperties(xmlPath); 时,我收到异常“进程无法访问该文件,因为该文件正在被另一个进程使用。

我确定目的地存在,但我不确定为什么会出现此错误。

【问题讨论】:

标签: c# asynchronous webclient-download


【解决方案1】:

当您尝试访问属性时,您的异步下载操作似乎尚未完成。在访问文件之前,您是否确定下载已完成?

您可以在 DownloadFileCompleted 事件中访问该文件。

http://msdn.microsoft.com/en-us/library/system.net.webclient.downloadfilecompleted.aspx

【讨论】:

  • 并且在完成事件触发之前,他可能不应该处理 WebClient 实例。看起来他应该只是删除他的方法调用的异步部分并同步执行。
  • 非常感谢你们俩..问题已解决....我使用了处理程序...以及删除了异步部分并同步运行了它....
  • 然后您可以通过单击投票箭头下方的勾号来接受答案。 :) meta.stackexchange.com/questions/23138/…
猜你喜欢
  • 2011-04-17
  • 2016-12-24
  • 2013-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多