所以我正在使用 C# 并正在制作一个注册系统。所以有一个添加图片的选项,我做什么,我提示用户选择一个文件,然后该文件将被复制到目录文件夹,然后重命名为学生的录取编号。这是该浏览按钮的代码:
OpenFileDialog openDlg = new OpenFileDialog();
openDlg.Filter = "All JPEG files (*.jpg; *.jpeg)| *.jpg; *.jpeg";
string filter = openDlg.Filter;
openDlg.Multiselect = false;
openDlg.Title = "Open a JPG File";
if (openDlg.ShowDialog() == DialogResult.OK)
{
curFileName = openDlg.SafeFileName;
string curFilePath = openDlg.FileName;
openDlg.Dispose();
string sourcePath = @curFilePath.Remove((curFilePath.Length - curFileName.Length));
string targetPath = "@";
mycon.Open();
string cmdstr = "SELECT imageDirectory from userSettings WHERE ID = 1";
cmd = new OleDbCommand(cmdstr, mycon);
dr = cmd.ExecuteReader();
while (dr.Read())
{
targetPath = (@dr["imageDirectory"].ToString());
}
dr.Close();
mycon.Close();
string sourceFile = Path.Combine(sourcePath, curFileName);
string destFile = Path.Combine(targetPath, curFileName);
File.Copy(sourceFile, destFile, true);
newname = @destFile.Remove((destFile.Length - curFileName.Length)).ToString() + "\\" + (DateTime.Now.Year + "-" + textBox1.Text+".jpeg");
if (File.Exists(newname) == true)
{
pictureBox1.Image.Dispose();
try
{
File.Delete(newname);
}
catch (IOException ex)
{
MessageBox.Show(ex.ToString());
return;
}
}
File.Move(destFile, newname);
photoPath = newname;
pictureBox1.Image = Image.FromFile(photoPath);
问题是:
a.) 我有一个功能允许用户进入下一步,然后如果他想在最后一步进行一些更改,他可以返回并更新它。这里的问题是当他更改图片时,我收到一条错误消息“无法访问该文件,因为它正在被另一个进程使用”
b.) 当用户已经上传了一张图片,然后返回主页,他决定重新注册时将无法上传新的图片,并且错误提示:“无法访问文件,因为它正被另一个进程使用”。
这两个错误都指向这里:
`File.Delete(newname);`
我真的不知道该怎么做伙计们,我从昨晚开始就一直在寻找解决方案,但我看不到一个不会让我完全改变整个代码的解决方案。请帮忙 :(