重命名图像然后重新显示时,我似乎遇到了计时问题。在我的代码中,我使用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)。