2

asp.net アプリケーションのディレクトリからファイルを削除しようとしていますが、おそらくアプリケーション自体が原因で、ファイルが別のプロセスによって使用されているという例外が常に発生します。

これがコードです

TableCell cell = (TableCell)PhotoGalleryGridView.Rows[e.RowIndex].Cells[1];
    DirectoryInfo photoGalleryDirectory = new DirectoryInfo(Server.MapPath("~/GalleryImages/"));
    FileInfo[] imgFiles = photoGalleryDirectory.GetFiles();
    for (int i = 0; i < imgFiles.Length; i++)
    {
        if (imgFiles[i].Name == cell.Text)
        {
            imgFiles[i].Delete();
        }
    }

このアクションを実行するにはどうすればよいですか? ありがとう

これを gridview の OnRowDeleting メソッドの使用の一部として実装したので、データベースから写真を削除すると、サイトのフォルダーからも写真が削除されます。

protected void PhotoGalleryGridView_OnRowDeleting(object sender, GridViewDeleteEventArgs e)
{

    TableCell cell = (TableCell)PhotoGalleryGridView.Rows[e.RowIndex].Cells[1];
    DirectoryInfo photoGalleryDirectory = new DirectoryInfo(Server.MapPath("~/GalleryImages/"));
    FileInfo[] imgFiles = photoGalleryDirectory.GetFiles();
    for (int i = 0; i < imgFiles.Length; i++)
    {
        if (imgFiles[i].Name == cell.Text)
        {
            imgFiles[i].Delete();
        }
    }
}

私は、この行動に関する他のアイデアを喜んで受け入れます。

4

2 に答える 2

1

リソースをカプセル化するオブジェクトを使用している場合は、オブジェクトの処理が完了したら、オブジェクトのDisposeメソッドが呼び出されることを確認する必要があります。

using statementこれは、C#でを使用してより簡単に行うことができます。usingステートメントは、オブジェクトを作成して最後にクリーンアップするために作成する必要のあるコードを単純化します。usingステートメントは、指定されたリソースを取得し、ステートメントを実行し、最後にオブジェクトのDisposeメソッドを呼び出してオブジェクトをクリーンアップします。

于 2012-03-18T10:41:42.263 に答える
0

問題は、私の localHost で実行されている IIS Express サービスです。プロセスはiisexpress.exeと呼ばれ、サイトを閉じて手動で削除しようとした後でもファイルを使用しています。asp.net開発サーバーを使用するように戻った後、問題はなくなりました。みんなに感謝します。

于 2012-03-19T08:30:20.287 に答える