내용 보기
작성자
관리자 (IP : 172.17.0.1)
날짜
2020-09-25 00:27
제목
[C#] .NET IDisposable 처리 정리
|
.NET IDisposable 처리 정리
01: public class Base : IDisposable
02: {
03: protected bool _disposed = false;
04:
05: protected virtual void Dispose(bool disposing)
06: {
07: if (_disposed == false)
08: {
09: if (disposing == true)
10: {
11: // 이 영역 안에서 Managed 자원을 해제
12: }
13:
14: // 이 영역 안에서 Unmanaged 자원을 해제
15:
16: _disposed = true;
17: }
18: }
19:
20: public void Dispose()
21: {
22: Dispose(true);
23: GC.SuppressFinalize(this);
24: }
25:
26: ~Base()
27: {
// [2006-10-06 내용 추가]
#if DEBUG
if (false == _disposed)
{
throw new ApplicationException("Base.Dispose() was not called!");
}
#endif
28: Dispose(false);
29: }
30: }
01: public class Derived : Base
02: {
03: protected override void Dispose(bool disposing)
04: {
05: if (_disposed == false)
06: {
07: if (disposing == true)
08: {
09: // 이 영역 안에서 Managed 자원을 해제
10: }
11:
12: // 이 영역 안에서 Unmanaged 자원을 해제
13: }
14:
15: base.Dispose(disposing);
16: }
17: }
|
출처1
https://www.sysnet.pe.kr/2/0/347
출처2