なので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.) ユーザーがすでに写真をアップロードしてからホームページに戻った場合、再度登録することを決定したときに新しい写真をアップロードすることはできず、次のエラーが表示されます。別のプロセスで使用されています。」
2つのエラーは両方ともここを指しています:
`File.Delete(newname);`
昨夜からこれに対する解決策を探していましたが、コード全体を完全に変更しないような解決策が見つかりません。助けてください :(