DirectoryInfo.GetFileSystemInfos和文件重命名

时间:2012-04-24 21:32:38

标签: c# asp.net-mvc-3 file-io file-rename

重命名图像然后重新显示时,我似乎遇到了计时问题。在我的代码中,我使用System.IO.File.Move两次来重命名目录中的一些图像。然后我尝试检索目录中的文件列表,但是当我这样做时,我得到了第一次重命名后存在的一些文件名,以及第二次重命名后存在的一些文件名。如何确保只获得第二次重命名后存在的文件名?我已经考虑过放入一个Thread.Sleep(),但这感觉就像一个黑客。如果它有帮助,我正在使用MVC3。

public ActionResult UpdateImages ()
{
   foreach (file in directory)
      System.IO.File.Move("oldname", "newname");
   foreach (file in directory)
      System.IO.File.Move("oldname", "newname");
   return RedirectToAction("Images", "Manager", new { id = Id });
}

public ViewResult Images(int id)
{
   var di = new DirectoryInfo(Server.MapPath("something")));
   var files = di.GetFileSystemInfos("*-glr.jpg");
   var orderedFiles = files.OrderBy(f => f.Name);
   var images = new List<string>();
   images.AddRange(orderedFiles.Select(fileSystemInfo => fileSystemInfo.Name));
   ViewData["Images"] = images;
   return View();
}

修改

我希望我能删除自己的问题。我似乎已经解决了这个问题,答案甚至与我在问题中提供的信息无关。

似乎我最终向服务器发送了Get和post。邮政开始了这项工作,但由于Get被解雇,该帖子的回复中止了。由于Get快速完成,它将使系统处于中间状态。

令人讨厌的代码行是一个锚元素,它同时附加了一个href和一个javascript点击处理程序(通过jQuery)。

0 个答案:

没有答案