У меня есть приложение Windows Forms, которое асинхронно хеширует файлы, используя BackgroundWorker
.Я реализовал отмену, проверяя CancellationPending
между каждым хэшируемым файлом.Само хеширование, по сути, таково:
var sha1 = new SHA1CryptoServiceProvider();
byte[] hash = sha1.ComputeHash(
new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite));
Единственная проблема с этим связана с особенно большими файлами - размером в сотни мегабайт или гигабайт - операция хеширования блокирует отмену до тех пор, пока она не будет завершена для этого файла.
Как лучше всего изменить это, чтобы можно было проверить отмену во время хэширования файла - например, каждые N миллисекунд или каждые N байтов?