У меня есть довольно большой проект, который я стараюсь держать как можно более чистым и аккуратным. Когда я запускаю анализатор кода в Visual Studio, я получаю ошибку надежности, которую я нахожу довольно раздражающей. Мне бы очень хотелось научиться обходить его. Вот упрощенный пример того, что я делаю.Как правильно утилизировать этот код?
Это предупреждение.
Предупреждение 1 CA2000: Microsoft.Reliability: В методе 'MyExampleClassForStackOverflow.AddFeed (строка)', вызовите System.IDisposable.Dispose на объект 'новые FeedClassExamle()', прежде чем все ссылки на него выходят за рамки.
Вот мой пример кода:
class MyExampleClassForStackOverflow : IDisposable
{
public ConcurrentDictionary<string, FeedClassExamle> Feeds { get; set; }
public void AddFeed(string id)
{
//The warning is coming from this code block.
//In the full code, the feed classes collects data on a specific
//interval and feeds them back using events.
//I have a bunch of them and they need to be accessible so I
//store them in dictionaries using keys to effeciently find them.
Feeds.TryAdd(id, new FeedClassExamle());
Feeds[id].Start();
}
public void Dispose()
{
foreach (var item in Feeds)
item.Value.Dispose();
}
}
class FeedClassExamle : IDisposable
{
public void Start()
{
}
public void Dispose()
{
}
}
Для того, чтобы проверить код, используйте:
using (var example = new MyExampleClassForStackOverflow())
{
}
Любое предложение будет приветствоваться.
хорошо вопрос. я всегда подавить это предупреждение в таких ситуациях ... было бы хорошо, чтобы знать, есть ли какой-либо обходной путь – 6opuc