这是关于ReSharper的警告“访问被安排的关闭”,通常在lambda中使用稍后安置的对象时出现.
Access to disposed closure in C#?更详细地讨论了这一点.
我的问题是:对于采用这样的lamdbas并立即执行它们的方法(所以你可以确定它们总是在所有对象被处理之前被执行):
有没有办法将它们标记为安全,所以使用该方法的任何代码都不再产生这些警告?
例:
using (var myObject = new MyDisposableObject()) { DoThisTwice(() => myObject.DoSomething()); } ... void DoThisTwice(Action do) { do(); do(); }
DoThisTwice接受一个委托(或一个lambda)并同步执行它.在方法返回的时候,lambda将不再被执行.只有myObject被处理,所以我们很好去.我们可以用一个注释来标记DoThisTwice的行,但是在所有使用该方法的地方都必须这样做.相反,我想将DoThisTwice标记为安全,所以Resharper不会对方法的任何调用者显示任何警告.