Должен ли ObjectContext в статическом методе быть расположен? - PullRequest
1 голос
/ 02 февраля 2012

Просто быстрая проверка работоспособности здесь!

Если у меня есть статический метод в классе экземпляра, например:

public class myClass 
{

    public static void AMethod() 
    {
        //do somit
    }

}

Будет ли это вызывать проблемы, если я буду ссылаться на ресурсы IDisposable втело метода, например, контекст объекта?

    public static void AMethod() 
    {
        ObjectContext context = new ObjectContext();

        // do somit
    }

Будет ли это причиной проблем, я имею в виду, сохранит ли он контекст объекта за кулисами после окончания тела метода из-за того факта, что он былстатический метод?

Класс, как можно видеть, не является статичным, а переменная является локальной для метода.

Я знаю, что мне следует использовать здесь слово «using»просто любопытно, может ли эта конкретная комбинация событий вызвать / вызвать утечку памяти.

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012

Во избежание каких-либо проблем рекомендуется утилизировать IDisposable ресурсы, как только вы закончили их использовать. Это может произойти, если заключить их в оператор using:

public static void AMethod() 
{
    using (ObjectContext context = new ObjectContext())
    {
        // do something
    }
}
1 голос
/ 02 февраля 2012

После выхода из области действия вашего метода AMethod ваш context объект больше не может быть использован, поэтому в конечном итоге он будет собираться мусором.

Но поскольку он реализует IDisposable, вы должны использовать оператор using:

using (ObjectContext context = new ...)
{
    // Use the context here
}
...