2

ファイルを削除したい。ただし、別のプロセスを使用しているため、実行できません。エラーメッセージ :

"The process cannot access the file '*file path\4.JPG*' because it is being used by another process."  

私のプログラムの説明は、画像を1つの共通ファイルにコピーするとします。次に、この画像を共通フォルダから削除したい場合、エラーメッセージが生成されます。file.Delete(..)が私のコードで機能していません。

    private void btnDelete_Click(object sender, EventArgs e)
    {
        DialogResult result = MessageBox.Show("Are you sure do you want to delete this recorde?","Delete",MessageBoxButtons.YesNo,MessageBoxIcon.Question);

        if (result.ToString().Equals("Yes"))
        {
            string deleteQuery = "DELETE FROM dbo.fEmployee WHERE EmpId=@empId";
            SqlParameterCollection param = new SqlCommand().Parameters;
            param.AddWithValue("@empId",cmbEmpIdD.SelectedValue);
            int delete = _dataAccess.SqlDelete(deleteQuery,param);
            if (delete>0)
            {
                **ImageDeletion();**
                MessageBox.Show("Recorde Deleted sucessfully.","Delete",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
            }
            else if (delete.Equals(0))
            {
                 MessageBox.Show("Recorde is not deleted.","Falied",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
            }
        }
    }


    private void ImageDeletion()
    {
        string ext;
        ext = Path.GetExtension(txtImgPathD.Text.Trim());
        if (!string.IsNullOrWhiteSpace(ext))
        {
            string path = appPath + @"\" + @"EmployeeImages\" + cmbEmpId.SelectedValue.ToString().Trim() + ext;
            PictureBox.InitialImage = null;
            PictureBox.Invalidate();
            PictureBox.Image = null;
            PictureBox.Refresh();
            File.Delete(path);
        }
    }

ファイル部分の削除の解決策を教えてください。ありがとうございました!

4

2 に答える 2

1

ここでのエラー メッセージは、知っておく必要があるすべてのことを示しています。何かがファイルを保持しているため、ファイルを削除できません。

アプリケーションの別の場所でファイルを開き、ファイルストリームを正しく閉じていませんか?

于 2012-12-27T13:53:30.043 に答える
0

で画像を破棄してみてくださいPictureBox

PictureBox.Image.Dispose();
于 2012-12-28T16:55:26.463 に答える