标准的Disponse方法
1 /// <summary>
2 /// DemoObject
3 /// </summary>
4 public class DemoObject : IDisposable
5 {
6 /// <summary>
7 /// 是否已经释放标记
8 /// </summary>
9 private bool disposed = false;
10
11 /// <summary>
12 /// 析构自己
13 /// </summary>
14 ~DemoObject()
15 {
16 Dispose(false);
17 }
18
19 /// <summary>
20 /// IDisposable的实现
21 /// Finalization终结自己
22 /// </summary>
23 public void Dispose()
24 {
25 Dispose(true);
26 GC.SuppressFinalize(this);
27 }
28
29 /// <summary>
30 /// 虚Dispose方法
31 /// </summary>
32 /// <param name="isDisposing"></param>
33 protected virtual void Dispose(bool isDisposing)
34 {
35 // 不要多次处理
36 if (disposed)
37 {
38 return;
39 }
40
41 if (isDisposing)
42 {
43 //释放托管资源
44 }
45
46 //释放非托管资源
47 disposed = true;
48 }
49 }
2 /// DemoObject
3 /// </summary>
4 public class DemoObject : IDisposable
5 {
6 /// <summary>
7 /// 是否已经释放标记
8 /// </summary>
9 private bool disposed = false;
10
11 /// <summary>
12 /// 析构自己
13 /// </summary>
14 ~DemoObject()
15 {
16 Dispose(false);
17 }
18
19 /// <summary>
20 /// IDisposable的实现
21 /// Finalization终结自己
22 /// </summary>
23 public void Dispose()
24 {
25 Dispose(true);
26 GC.SuppressFinalize(this);
27 }
28
29 /// <summary>
30 /// 虚Dispose方法
31 /// </summary>
32 /// <param name="isDisposing"></param>
33 protected virtual void Dispose(bool isDisposing)
34 {
35 // 不要多次处理
36 if (disposed)
37 {
38 return;
39 }
40
41 if (isDisposing)
42 {
43 //释放托管资源
44 }
45
46 //释放非托管资源
47 disposed = true;
48 }
49 }