0

重命名图像然后重新显示它们时,我似乎遇到了时间问题。在我的代码中,我使用 System.IO.File.Move 两次重命名目录中的一些图像。然后稍后我尝试检索目录中的文件列表,但是当我这样做时,我得到了一些在第一次重命名后存在的文件名,以及在第二次重命名后存在的一些文件名。如何确保仅获得第二次重命名后存在的文件名?我曾考虑放入一个 Thread.Sleep(),但这感觉就像一个 hack。如果有帮助,我正在使用 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 都发送到了服务器。The Post 开始了这项工作,但由于 Get 也被解雇了,因此帖子的响应被中止。由于 Get 快速完成,它将使系统处于中间状态。

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

4

0 回答 0