Если файл занят, то выскакивает ошибка - C#

Узнай цену своей работы

Формулировка задачи:

У меня прога написана на хеширование значений. Процесс хеширования очень долгий и я не знаю, когда она завершится (хеш записывает в блокнот). После хеширования мне нужно найти одинаковую сумму (коллизия). Когда я запускаю функцию поиска выскакивает ошибка т.к. файл занят процессом хеширования.

Вопрос: Можно ли добавить статус процесса хеширования? Если да, то какой код. Какой код нужен кнопке, если допустим файл занят, то Выскакивает Message.Box.Show?

Код хеширования:
public string GetMD5(string text)
        {
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(text));
            byte[] result = md5.Hash;
            StringBuilder str = new StringBuilder();
            for (int i = 0; i < 9; i++)
            {
                str.Append(result[i].ToString("x2"));
            }
            return str.ToString();
        }
 
private void button1_Click(object sender, EventArgs e)
        {
            textBox4.Text +=DateTime.Now + " Запущен процесс хеширования" + Environment.NewLine;
            StreamWriter write = new StreamWriter("md5.txt", true);
            for (int i = 0; i < 9999; i++)
            {
                write.WriteLine(GetMD5(i.ToString()));
            }
        }
Код поиска дубликатов:
private void button2_Click(object sender, EventArgs e)
        {
            textBox4.Text += DateTime.Now + " Запущен поиск дубликатов" + Environment.NewLine;
            List<string> lines = File.ReadAllLines("md5.txt").ToList();
            for (int i = 0; i < lines.Count; ++i)
            {
                int count = lines.Count(str => str == lines[i]);
                if (count > 1)
                {                 
                    textBox3.Text +=
                    (string.Format(
                    "Строка '{0}' повторяется {1} раз(-а)",
                    lines[i], count)
                    ) + Environment.NewLine;
                    lines.Remove(lines[i]);
                }
            }
        }
Скрин ошибки, если файл занят:

Решение задачи: «Если файл занят, то выскакивает ошибка»

textual
Листинг программы
using (StreamWriter write = new StreamWriter("md5.txt", true))
{
    for (int i = 0; i < 9999; i++)
    {
        write.WriteLine(GetMD5(i.ToString()));
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5
Похожие ответы