0

画像の名前を変更してから再表示するときに、タイミングの問題が発生しているようです。私のコードでは、ディレクトリ内のいくつかの画像の名前を変更するために System.IO.File.Move を 2 回使用しています。その後、ディレクトリ内のファイルのリストを取得しようとしましたが、そうすると、最初の名前変更後に存在したファイル名と、2 回目の名前変更後に存在したファイル名が取得されます。2 回目の名前変更後に存在するファイル名のみを確実に取得するにはどうすればよいですか? 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 の両方をサーバーに送信してしまったようです。Post は作業を開始しましたが、Get も起動されたため、投稿からの応答は中止されました。Get はすぐに終了するため、システムが中間状態に陥る可能性があります。

問題のあるコード行は、href と javascript クリック ハンドラ (jQuery 経由) の両方が関連付けられたアンカー要素でした。

4

0 に答える 0