Show()
을 사용하여 열린 폼을 닫을 때 Close()
대신 Dispose()
을 사용하면 어떻게됩니까? 누군가가 상세히 말해 줄 수 있습니까? Dispose()
방법에서 어떻게됩니까?close() 메서드 대신 dispose() 메서드를 사용하여
답변
Close()
과 Dispose()
의 기본 차이는 Close()
메서드를 호출 할 때 관리되는 리소스를 일시적으로 닫고 다시 열 수 있다는 것입니다. 즉, 동일한 객체로 리소스를 다시 열거 나 사용할 수 있습니다. Dispose()
메서드는 정리를 위해 메모리에서 리소스 ((un) managed)를 영구적으로 제거하기 때문에 더 이상 처리 할 리소스가 없습니다.
또는 일반 진술. 연결 개체를 사용하여 Close()
을 호출하면 연결이 다시 풀로 해제됩니다. Dispose()
을 호출하면 Close()
을 호출 한 다음 연결 문자열을 null로 설정합니다.
Stream과 같은 일부 개체는 IDisposable
을 구현하지만 Dispose 메서드는 개체를 IDisposable
으로 먼저 캐스팅 한 경우에만 사용할 수 있습니다. 그것은 Close()
방법을 폭로하지만.
나는 항상 Dispose()
을 호출해야합니다. 객체를 처리 할 때 IDisposable
을 구현하는 모든 객체에 대해 호출해야합니다. 아무것도하지 않더라도. jit 컴파일러는 어쨌든 최종 코드에서이를 최적화합니다. 개체에 Close()
이 있지만 Dispose()
이 없으면 Close()
으로 전화하십시오.
은 또한 블록을 빠져 나오면도록 SqlConnection에 Dispose()
를 호출합니다 IDispoable
객체
using(SqlConnection con = new SqlConnection())
{
//code...
}
이
에 using 문을 사용할 수 있습니다.디 컴파일 두 방법 (Dispose
및 Close
) 그냥 같이, 후자의 두 개의 추가 검사를 수행하고 Dispose
호출 밝혀 : 문서에서
object[] objArray;
if (base.GetState(262144))
{
throw new InvalidOperationException(SR.GetString("ClosingWhileCreatingHandle", new object[] { "Close" }));
}
if (base.IsHandleCreated)
{
this.closeReason = CloseReason.UserClosing;
base.SendMessage(16, 0, 0);
return;
}
base.Dispose();
:
양식이 닫히면 개체 내에 작성된 모든 자원이 닫히고 양식이 삭제됩니다. [...] 닫을 때 양식이 삭제되지 않는 두 가지 조건은 (1) 다중 문서 인터페이스 (MDI) 응용 프로그램의 일부이고 양식이 보이지 않는 경우입니다. (2) ShowDialog를 사용하여 양식을 표시했습니다. 이 경우 가비지 수집을 위해 양식의 모든 컨트롤을 표시하려면 Dispose를 수동으로 호출해야합니다.
희망이 있습니다.
사실,이 경우 Close()
및 Dispose()
는 매우 다르다 :
Close
는 appropiate Windows 메시지를 전송하여 양식을 닫습니다.Open()
Dispose
을 사용하여 양식을 다시 열 수 있으므로 양식 인스턴스를 다시 재사용 할 수 없습니다.
- 1. EventWaitHandle을 Dispose() 또는 Close()해야합니까?
- 2. FolderBrowserDialog에서 Dispose 메서드를 호출해야합니까?
- 3. GarbageCollector, Dispose 또는 정적 메서드?
- 4. WCF : 부분 클래스를 사용하여 클라이언트의 Dispose 메서드를 재정의하는 것이 안전합니까?
- 5. WinForm의 Dispose 메서드를 확장하는 방법은 무엇입니까?
- 6. ASP.NET : Init 및 Dispose 메서드 구현
- 7. 더 나은 Dispose 메서드 (ComponentModel.IContainer 통해)
- 8. WPF 응용 프로그램에서 Dispose() 메서드를 호출하는 경우
- 9. IEnumerator : 빈 Dispose 메서드를 사용하는 것이 정상입니까?
- 10. 는 Layman의 용어로 Java에서 close() 메서드를 설명합니다.
- 11. Using 범위를 사용할 때 Close 메서드를 호출해야합니까?
- 12. VB.NET의 인스턴스 메서드 대신 클래스 메서드 만들기
- 13. 데이터베이스의 필드 대신 메서드를 사용하여 "찾기"정렬
- 14. ShowDialog close on close
- 15. MEF의 문제 - ExportFactory <T> - 호출 Dispose 메서드
- 16. 이벤트 처리기 제거 - FormClosing 이벤트 또는 Dispose() 메서드
- 17. Dispose 메서드 실행없이 IsDisposed를 true로 설정 한 C# 컨트롤
- 18. C#에서 dispose() 및 initializeComponent() 메서드를 사용하면 문제가 발생합니다.
- 19. method_missing 대신 NoMethodError 처리기를 사용하여 동적 메서드 호출하기
- 20. GET 대신 POST를 보내는 WCF 메서드
- 21. 동적으로 메서드/메서드를 변수로 할당
- 22. TcpClient가 IDisposable을 구현하고 공용 Dispose 메서드를 구현하지 못하는 이유는 무엇입니까?
- 23. 의도 - android 개발자를 사용하여 활동 대신 메서드 호출
- 24. 스레드 안전 네트워크 스트림은 Close() 메서드를 호출 한 스레드를 고정시킵니다.
- 25. x를 클릭 할 때 viewpart 대신 dispose 처리
- 26. 두 번 호출되는 NSDocument 하위 클래스 "close"메서드
- 27. groovy mixin을 사용하여 정적 메서드를 추가하는 방법
- 28. HighSlide Close
- 29. close()를
- 30. Android : 인 텐트를 사용하여 클래스 대신 메서드를 호출 하시겠습니까?
C#에는 양식이 없습니다. WinForms/WPF/...를 지정하십시오. –
@Henk Holterman - 내 질문을 업데이트했습니다. – Selo
[양식이 닫힌 후에 양식을 처리해야합니까?] (https://stackoverflow.com/a/39501121/3110834)) –