我的一个库中有一个带有静态方法的静态加密/解密类。代码有点大,所以我把它贴在这里: http: //pastebin.com/zRZtNmjU
直到它开始在调用中执行的某些代码的执行堆栈中使用之前,我对这段代码没有任何问题Parallel.ForEach()
。我尝试在一些 MemoryStream 和 CryptoStream 变量上添加一些使用,lock
但这似乎没有帮助。我这样做是因为我相当肯定这个问题是由从多个线程访问这个静态类和方法引起的。
我不断得到的例外是:“填充无效,无法删除。”
当执行到达decryptedTextStream.FlushFinalBlock();
名为 Decrypt 的代码中的最后一个方法(第 250 行)时,会发生此异常。
我的问题是 - 我无法弄清楚代码有什么问题,我想知道唯一的问题是类和方法是静态的吗?几个月来,我一直在使用此代码而没有出现任何问题,并且最近才开始在其他一些 TPL 代码中使用它时遇到问题。我应该将这个类重构为基于实例的,还是不能解决我遇到的异常?