Если файл занят, то выскакивает ошибка - 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())); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д