我试图解密报告进度的文件以在进度条中显示它,这是我的解密功能
private static void Decrypt(String inName, String outName, byte[] rijnKey, byte[] rijnIV)
{
FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
fout.SetLength(0);
byte[] bin = new byte[1048576];
long rdlen = 0;
long totlen = fin.Length;
int len;
SymmetricAlgorithm rijn = SymmetricAlgorithm.Create();
CryptoStream encStream = new CryptoStream(fout, rijn.CreateDecryptor(rijnKey, rijnIV), CryptoStreamMode.Write);
while (rdlen < totlen)
{
len = fin.Read(bin, 0, bin.Length);
encStream.Write(bin, 0, len);
rdlen = rdlen + len;
//Call here a method to report progress
}
encStream.Close();
fout.Close();
fin.Close();
}
我想调用一个方法来报告循环内部的进度,但是根据方法的响应时间,这可能会降低解密器的性能,如何在没有此问题的情况下报告进度? 谢谢!
答案 0 :(得分:0)
为您提出几点建议:
和/或
或者更简单,在您的情况下可能正常工作,在循环中包含一个计数器,然后在循环中每次 n 次,执行进度报告并重置 n的值为零。通过实验选择 n 的值,以便它经常更新(每秒几次),但是您没有进行比您更多的进度更新。例如如果你的循环每秒迭代3000次,那么每1000次更新一次就没问题了。