Это не решит вашу проблему, но вы можете предпочесть использовать рекомендованный стандартный шаблон using
вместо ручного вызова Dispose()
:
using (var oDatabaseContext = new DatabaseContext() )
try
{
//
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Для увеличения памяти вы должны знать, что GC.Collect()
может работать в любое время в фоновом режиме.
Следовательно, то, что вы называете проблемой, является нормальным: пробелы управляемой памяти не освобождаются, когда вы потеряли, сохраняются ссылки на объекты, они отмечаются только как освобождаемые позже, когда это необходимо. обычно, если в системе недостаточно памяти.
Таким образом, вы можете вызывать ее явно в конце метода: он не гарантирует, что он работает, но в Windows он обычно запускается, когда вы вызываете его, вызываянебольшое отставание.
finally
{
GC.Collect();
}
Поэтому возможно память, выделенная ToList()
, которая больше не используется, будет освобождена.
https://docs.microsoft.com/dotnet/api/system.gc.collect#System_GC_Collect