これは、後で廃棄されるオブジェクトがラムダで使用されている場合に通常表示されるReSharperの警告「廃棄閉鎖へのアクセス」です。 Access to disposed closure in C#?ではこれについて少し詳しく説明しています。廃棄閉鎖へのアクセス - 安全なマーク方法
私の質問です:そのようlamdbasを取ると(言ったオブジェクトが配置される前に、あなたは、彼らが常に実行されていることを確認することができますので)すぐにそれらを実行する方法を示します。
を彼らは同様に安全マークする方法はあります、そのメソッドを使用するコードは、もはやそれらの警告を生成しません。
例:
using (var myObject = new MyDisposableObject())
{
DoThisTwice(() => myObject.DoSomething());
}
...
void DoThisTwice(Action do)
{
do();
do();
}
DoThisTwiceはデリゲート(またはラムダ)を受け取り、同期的に実行します。メソッドが戻るときに、ラムダはもう実行されません。それだけがmyObject
が処分されているので、私たちは行かなくてはなりません。私たちは、DoThisTwice
という行にコメントを付けることができますが、これは、同様の方法でメソッドを使用するすべての場所で行わなければなりません。代わりにDoThisTwice
を安全とマークしたいので、Resharperはメソッドの呼び出し元に対して警告を表示しません。
*完全に*私が探していたもの! – chiccodoro
うわー、とても素敵:) –