IT TIP

C # UserControl에 Dispose 기능을 어떻게 추가합니까?

itqueen 2020. 12. 10. 21:34
반응형

C # UserControl에 Dispose 기능을 어떻게 추가합니까?


UserControl을 구현하는 클래스가 있습니다. .NET 2005에서 Dispose 메서드는 다음과 같은 MyClass.Designer.cs 부분 클래스 파일에 자동으로 생성됩니다.

  protected override void Dispose(bool disposing)
  {
     if (disposing && (components != null))
     {
        components.Dispose();
     }
     base.Dispose(disposing);
  }

고유 한 Dispose 기능을 추가하려면 어디에 두어야합니까? 이 파일이 생성 되었기 때문에 여기에 코드를 추가하고 날아갈 위험이 없습니다.


이 경우 생성 된 Dispose메서드를 기본 파일로 이동하고 확장합니다. Visual Studio는이를 존중합니다.

다른 방법은 부분 메서드 (C # 3.0)를 사용하는 것입니다.


모든 Component클래스는 Disposed이벤트를 구현합니다 . 해당 이벤트에 대한 이벤트 처리기를 추가하고 거기에서 항목을 정리할 수 있습니다.

예를 들어, UserControl다음 방법을 추가 할 수 있습니다.

private void OnDispose(object sender, EventArgs e)
{
    // do stuff on dispose
}

생성자 (또는 Load이벤트 핸들러)에서 다음 줄을 추가합니다.

Disposed += OnDispose;

이 경우 코드 생성기가 귀하의 코드를 존중한다고 생각합니다. 코드 숨김에 넣어도 안전해야합니다.


VS 2005 (및 2008)에서는 Dispose메서드를 업데이트 할 수 있으며 디자이너에서 컨트롤을 편집 할 때 제거되지 않습니다.


원하는 경우 .designer.cs 파일에서 기본 .cs 파일로 이동할 수 있습니다. 이미 말했듯이 덮어 쓰지 않습니다.


사용자 컨트롤이 상속하는 구성 요소 클래스의 public void Dispose () 메서드를 오버로드하면됩니다.

기본 메서드에 대한 호출을 전달하고 기능적으로 처리를 수행하는지 확인하십시오. 그렇지 않으면 완전히 구현하지 않는 한 기능이 중단됩니다.


가장 깨끗한 방법은 컨트롤이 자체 Disposed () 이벤트를 구독하고 거기에서 정리를 수행하는 것입니다.


정리하는 데 사용할 수있는 UserControl에 대한 Unloaded 이벤트가 있습니다.

참고 URL : https://stackoverflow.com/questions/167602/how-do-i-add-dispose-functionality-to-ac-sharp-usercontrol

반응형