C# 因为没有执行每个循环

C# 因为没有执行每个循环,c#,.net,asp.net-core,C#,.net,Asp.net Core,我有下面的代码,但它没有完全执行for-each循环 A类: if (errorILevel) return; else { int z = await _valuationManagement.UpdateLastILevelRefreshTimeForPDFAll(valuationFundTemplates, cancellationToken); } B类: public async Task<int> UpdateLastILevelRefreshTimeForP

我有下面的代码,但它没有完全执行for-each循环

A类:

if (errorILevel)
  return;
else
{
  int z = await _valuationManagement.UpdateLastILevelRefreshTimeForPDFAll(valuationFundTemplates, cancellationToken);
}
B类:

public async Task<int> UpdateLastILevelRefreshTimeForPDFAll(List<ValuationFundTemplateWithPortfolioCompany> valuationFundTemplate, CancellationToken cancellationToken = default(CancellationToken))
{
  int result = await _valuationFundTemplateRepository.UpdateLastRefreshILevelPDFAll(valuationFundTemplate,cancellationToken);
  return result;
}

执行时,它返回到B类,B类返回到A类而不返回任何结果。它甚至不执行for-each循环。请让我知道我做错了什么

我打赌你在

_context.ValuationFundTemplate.SingleAsync

这就是为什么一切都会马上回来。您可以通过将调用包装在try-catch块中进行验证,并在catch块中放置一个断点

@MichaelRandall这只是我在此处显示的代码的一部分,请尝试在这一行放置一个断点tettemplates.LastILevelRefreshTime=DateTime.UtcNow,然后查看它是否在那里中断。如果没有,请在您的
foreach
上设置一个断点,检查
valuationFundTemplate
@Flydog57中是否有任何内容,它不会出现在行诱惑Templates.LastILevelRefreshTime=DateTime.UtcNow中。一旦遇到var-tenteTemplates=wait _context.ValuationFundTemplate.SingleAsync(p=>p.ValuationId==item.ValuationId&&p.FundId==item.FundId&&p.TemplateId==item.TemplateId,cancellationToken);它就像你错过了等待某处…@johnny5我添加了等待无处不在,正如你在代码中看到的那样你是对的,我在这里出错错误:无法访问已处理的对象。此错误的一个常见原因是处理通过依赖项注入解析的上下文,然后在应用程序的其他位置尝试使用相同的上下文实例。如果对上下文调用Dispose(),或将上下文包装到using语句中,则可能会发生这种情况。如果您使用的是依赖项注入,那么应该让依赖项注入容器处理上下文实例。对象名称:“ValuationsReportingContext”。这意味着您在之前的某个位置打开并释放了_上下文。您可以尝试建议的语句:不要处置,也不要使用“using”语句
var tempTemplates = await _context.ValuationFundTemplate.SingleAsync(p => 
    p.ValuationId == item.ValuationId && p.FundId == item.FundId &&
    p.TemplateId == item.TemplateId, cancellationToken);
_context.ValuationFundTemplate.SingleAsync