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

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

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

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

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

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

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

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

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


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

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

9   голосов , оценка 4.111 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы