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