Bonjour,
à l'appel de ln.Clear , la méthode Dispose et le destructeur ne sontappeller à ce moment là.
Comment on fais ?
Je veux intercepter un evenement lors d'un remove ou d'un clear sur la liste d'objjet 'test'
Le destructeur est appeller à la fin du programme mais en aucun cas sur le ln.Clear , pourtant Clear nettoie la liste et libére l'objet 'test' .......
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace dispose1 { class Program { static void Main(string[] args) { List<test> ln = new List<test>(); for (int i = 0;i<10;i++) { test ts = new test(); ts.set(i + 1); ln.Add(ts); } ln.Clear(); ln = null; } } internal class test : IDisposable { private int i; internal test() { } ~test() { set(0); } internal void set(int a) { i = a; } internal int get() { return i; } #region IDisposable Support private bool disposedValue = false; // To detect redundant calls protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { // TODO: dispose managed state (managed objects). } // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below. // TODO: set large fields to null. disposedValue = true; } } // TODO: override a finalizer only if Dispose(bool disposing) above has code to free unmanaged resources. // ~test() { // // Do not change this code. Put cleanup code in Dispose(bool disposing) above. // Dispose(false); // } // This code added to correctly implement the disposable pattern. public void Dispose() { // Do not change this code. Put cleanup code in Dispose(bool disposing) above. Dispose(true); // TODO: uncomment the following line if the finalizer is overridden above. // GC.SuppressFinalize(this); } #endregion } }
Partager