Piszę program do selekcjonowania zdjęć, tzn. on wyświetla mi zdjęcie a ja wybieram czy ma zostać skasowane czy nie. Oto cały kod z Form1:
string ścieżka;
int stan = 0;
string[] listaZdjęć = new string[2000];
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
folderBrowserDialog1.ShowDialog();
ścieżka = folderBrowserDialog1.SelectedPath.ToString();
listaZdjęć = Directory.GetFiles(ścieżka);
for (int licznik = 0; licznik < listaZdjęć.Length; licznik++)
{
if (Path.GetExtension(listaZdjęć[licznik]).Equals(@".JPG") == false)
{
if (Path.GetExtension(listaZdjęć[licznik]).Equals(@".JPEG") == false)
{
listaZdjęć[licznik] = "";
}
}
}
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
pictureBox1.Image = Image.FromFile(listaZdjęć[0]);
}
private void button3_Click(object sender, EventArgs e)
{
pictureBox1.Image = Image.FromFile(listaZdjęć[stan + 1]);
File.Move(listaZdjęć[stan], ścieżka + @"\OK\" + Path.GetFileName(listaZdjęć[stan])); //tu jest błąd
stan++;
}
private void button4_Click(object sender, EventArgs e)
{
pictureBox1.Image = Image.FromFile(listaZdjęć[stan + 1]);
File.Copy(listaZdjęć[stan], ścieżka + @"\Do usunięcia\" + Path.GetFileName(listaZdjęć[stan]));
stan++;
}
}
Chodzi o to, że po zmianie zdjęcia w pictureboxie plik z poprzednim zdjęciem ciągle jest używany przez program(IOException). Cała reszta kodu funkcjonuje poprawnie, gdy zamieniłem Move na Copy, pliki się kopiowały i całość działała sprawnie. Jak więc zamknąć plik z nieużywanym już zdjęciem?