C# Процесс не может получить доступ к файлу, поскольку он используется другим процессом — при удалении файла

Я пытаюсь создать базовый инструмент преобразования изображений, который преобразует изображения в формат .jpeg, а затем далее по строке в значение Base64 для некоторых вставок SQL.

В настоящее время я получаю сообщение об ошибке в заголовке при запуске кода.

Приведенное ниже немного запутанно, так как я пытался исправить это некоторое время, и этот раздел прошел много итераций. Я просмотрел похожие запросы, но ни один из них не соответствовал сценарию и не устранил проблему.

Мой опыт работы с C# ограничен, поэтому прошу прощения, если у меня возникнут дополнительные вопросы относительно реализации исправления, если таковое появится.

        private void imageLocationBtn_Click(object sender, EventArgs e)
        {
            byte i = 0;
            //Open folder browser
            FolderBrowserDialog openFileDialog1 = new FolderBrowserDialog();
            //Take image names and put them into the list box
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string strFilename = openFileDialog1.SelectedPath;

                imageLocationTxtBx.Text = strFilename;

                //Display File Names found
                string root = strFilename;
                string[] fileEntries = Directory.GetFiles(root);
                foreach (string fileNameRoot in fileEntries)
                {
                    string fileName = fileNameRoot.Substring((fileNameRoot.LastIndexOf('\\') + 2), ((fileNameRoot.LastIndexOf('.')) - (fileNameRoot.LastIndexOf('\\') + 2)));
                    Bitmap bmp1 = new Bitmap(Image.FromFile(fileNameRoot));

                    File.Delete(fileNameRoot);
                    bmp1.Save("C:\\Users\\HobbitForHire\\Pictures\\Conversion Images\\" + fileName + ".Jpeg", ImageFormat.Jpeg);
                }

person HobbitForHire    schedule 13.01.2020    source источник
comment
Вы можете сохранить двоичные данные в базе данных в столбце VARBINARY(MAX) (SQL Server), чтобы избежать дополнительного пространства, занимаемого кодировкой base64.   -  person Andrew Morton    schedule 13.01.2020
comment
Чтобы добавить к дубликату: вызовите bmp1.Save, а затем удалите его, перед вызовом File.Delete. Например. using (Bitmap bmp1 = ...) { bmp1.Save(...); } File.Delete(...)   -  person canton7    schedule 13.01.2020
comment
Вы открыли файл в другой программе?   -  person ds4940    schedule 13.01.2020