Visual Studio代码分析在此方法中的monitor
变量上生成警告“在丢失范围之前丢弃对象”(CA2000)。为什么代码分析在这个方法上激发CA2000?
private void MonitorJob(IJob job, CancellationToken cancellationToken)
{
var monitor = new JobMonitor(job, _backend); // <- CA2000
try
{
var task = monitor.Run(cancellationToken);
_activeJobs[task] = monitor;
}
catch
{
monitor.Dispose();
throw;
}
}
我明白CA2000做什么,我通常能够明白为什么我的代码违反了规则,并做出相应的改变。
但是,在这种情况下,我很难过 - 这真的是一个误报,还是我错过了什么?
使用Visual Studio 2015年企业版,针对.NET 4.5,使用C#6
对于一个工具来说,Run()方法总是会抛出一个异常。或者假设你这么做,它可能会在以后放置,因为你将它存储在_activeJobs中。只要压制警告。 –
不使用'使用'的原因是什么? – qxg
@qxg你如何在这里使用它? – zerkms