大文件我有一個Windows窗體應用程序文件異步使用BackgroundWorker
哈希值。我通過檢查每個散列文件之間的CancellationPending
來實現取消。散列本身基本上是這樣的:散列在後臺線程
var sha1 = new SHA1CryptoServiceProvider();
byte[] hash = sha1.ComputeHash(
new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite));
與唯一的問題是特別大的文件 - 百兆或千兆字節的大小 - 哈希運算塊取消,直至完成該文件。
什麼會改變這一點的最好方式,以便當文件被混編取消可檢查 - 例如每ñ毫秒或每ñ字節?
最好在取消時拋出一個異常 - 否則,調用者可能會將正確的文件結尾與取消混淆。此外,你不知道的內存多大SHA1的工作塊,因此你不知道如何ofter將取消標誌進行檢查。 –