¿Qué significa "Acceso al cierre dispuesto"?

Tengo el siguiente código:

public void DequeueRecipe(AuthIdentity identity, params Guid[] recipeIds)
{
   using (var session = GetSession())
   {
      var recipes = (from r in recipeIds select new Models.Recipes {RecipeId = r}).ToArray();

      var dbRecipes = session.QueryOver<Models.QueuedRecipes>()
         .Where(Expression.Eq("UserId", identity.UserId))
         .Where(Expression.InG("Recipe", recipes))
         .List<Models.QueuedRecipes>();

      using (ITransaction transaction = session.BeginTransaction())
      {
         dbRecipes.ForEach(r => session.Delete(r)); // <-- Warning
         transaction.Commit();
      }
   }
}

reSharper me está dando la advertencia:

Acceso a cierre dispuesto.

En la línea:

dbRecipes.ForEach(r => session.Delete(r));

(Lossession La variable está subrayada como el culpable).

Si bien es cierto elForEach método toma una expresión lamba que crea un cierre alrededor de la variablesession, No veo una forma en la que posiblemente se eliminaría cuando se ejecute este código. Quizás reSharper piensaForEach podría ejecutar algún tipo de tarea en paralelo, o guardar esoAction<> para un momento posterior, por lo tanto, técnicamente podría eliminarse mientras la función anónima todavía esté disponible en la memoria.

¿Estoy seguro de ignorar esta advertencia? ¿Hay alguna forma en que pueda reformatear mi código para evitar que aparezca esta advertencia? ¿Existe realmente un peligro presentado por este código?

Estoy acostumbrado a reSharper ser más inteligente que yo, así que me gustaría entender exactamente lo que está pasando.

Respuestas a la pregunta(1)

Su respuesta a la pregunta