如何手动处置 RSACryptoServiceProvider?

hul*_*ist 5 c# dispose rsacryptoserviceprovider

我在 MSDN 上读到(请参阅重要说明)必须处置 RSACryptoServiceProvider。他们举了这样的例子:

using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
Run Code Online (Sandbox Code Playgroud)

现在我尝试将 RSACryptoServiceProvider 包含到 MyClass 中,并在多个方法中使用它。通过此设置,我无法使用 using 语句。

相反,我尝试在合适的时间调用 RSACryptoServiceProvider 对象的 .Dispose() 方法,但随后收到编译错误消息:

`System.Security.Cryptography.AsymmetryAlgorithm.Dispose(bool)' 由于其保护级别而无法访问

RSACryptoServiceProvider 的使用时间是否不应超过一次函数调用(使用 using 语句)?

我该如何解决这个问题,不让 Dispose 调用成为一个选项?

SwD*_*n81 2

Clear方法看起来会调用 dispose 方法

此方法是对 IDisposable.Dispose 方法的简单调用。调用 Dispose 允许将 AsymmetryAlgorithm 类使用的资源重新分配用于其他目的。有关 Dispose 的更多信息,请参阅清理非托管资源。

  • @phq:或者,如果由于某种原因您“坚持”调用 Dispose,则将值转换为 IDisposable,然后对转换结果调用 Dispose。但最好按照文档说明进行操作并致电 Clear。 (2认同)