Если файл занят, то выскакивает ошибка - 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()));
}
}