Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2015, 17:03   #1
ts-alan
Форумчанин
 
Регистрация: 07.07.2010
Сообщений: 825
По умолчанию метод dispose

Привет всем возник вопрос .Вот я высвабаждаю неуправляемые ресурсы с помощью dispose,ну например ентити подключение,фрейворк реализует сам метод dispose ,а что там ваше конкретно находиться? какой код.
ts-alan вне форума Ответить с цитированием
Старый 25.04.2015, 17:35   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

В смысле что? Освобождение ресурсов. Закрытие подключения и т.п.

Возьмите и посмотрите код. Если ReSharper стоит, то одним кликом это делается, если не стоит, то тоже несложно каким-нибудь DotPeek'ом. Или сами исходники https://entityframework.codeplex.com...Control/latest


Код:
  public class DbContext : IDisposable, IObjectContextAdapter
  {
    private InternalContext _internalContext;

    public void Dispose()
    {
      this.Dispose(true);
      GC.SuppressFinalize((object) this);
    }

    protected virtual void Dispose(bool disposing)
    {
      this._internalContext.Dispose();
    }
  }
Код:
  internal abstract class InternalContext : IDisposable
  {
    public void Dispose()
    {
      this.DisposeContext(true);
      GC.SuppressFinalize((object) this);
    }

    public virtual void DisposeContext(bool disposing)
    {
      if (this.IsDisposed)
        return;
      if (disposing && this.OnDisposing != null)
      {
        this.OnDisposing((object) this, new EventArgs());
        this.OnDisposing = null;
      }
      if (this._tempObjectContext != null)
        this._tempObjectContext.Dispose();
      this.Log = null;
      this.IsDisposed = true;
    }
  }
Код:
  // одна из реализаций InternalContext
  internal class EagerInternalContext : InternalContext
  {
    public override void DisposeContext(bool disposing)
    {
      if (this.IsDisposed)
        return;
      base.DisposeContext(disposing);
      if (!disposing || !this._objectContextOwned)
        return;
      this._objectContext.Dispose();
    }
  }
Код:
  /// <summary>
  /// ObjectContext is the top-level object that encapsulates a connection between the CLR and the database,
  ///  serving as a gateway for Create, Read, Update, and Delete operations.
  /// </summary>
  public class ObjectContext : IDisposable, IObjectContextAdapter
  {
    protected virtual void Dispose(bool disposing)
    {
      if (this._disposed)
        return;
      if (this._transactionHandler != null)
        this._transactionHandler.Dispose();
      if (disposing)
      {
        if (this._connection != null)
        {
          this._connection.StateChange -= new StateChangeEventHandler(this.ConnectionStateChange);
          if (this._contextOwnsConnection)
            this._connection.Dispose();
        }
        this._connection = (EntityConnection) null;
        if (this._objectStateManager != null)
          this._objectStateManager.Dispose();
      }
      this._disposed = true;
    }
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CA2000 Dispose objects before losing scope rata C# (си шарп) 3 04.09.2013 16:57
не работает dispose MYriad Помощь студентам 1 02.10.2011 14:19
Как обозначается NEW и DISPOSE в блоксхеме??? Андрю)(@ Паскаль, Turbo Pascal, PascalABC.NET 1 08.12.2008 21:15
Почему Dispose не освобождает память? DeLorean Общие вопросы Delphi 4 08.04.2008 00:17