2 using System.Collections.Generic;
10 /// <since_tizen> 6 </since_tizen>
11 public class Disposable : global::System.IDisposable
14 /// A Flat to check if it is already disposed.
16 /// <since_tizen> 6 </since_tizen>
17 protected bool disposed = false;
18 private bool isDisposeQueued = false;
21 /// Create an instance of BaseHandle.
23 /// <since_tizen> 6 </since_tizen>
31 /// <since_tizen> 6 </since_tizen>
36 isDisposeQueued = true;
37 DisposeQueue.Instance.Add(this);
44 /// <since_tizen> 6 </since_tizen>
47 //Throw excpetion if Dispose() is called in separate thread.
48 if (!Window.IsInstalled())
50 throw new System.InvalidOperationException("This API called from separate thread. This API must be called from MainThread.");
55 Dispose(DisposeTypes.Implicit);
59 Dispose(DisposeTypes.Explicit);
60 System.GC.SuppressFinalize(this);
67 /// <since_tizen> 6 </since_tizen>
68 protected virtual void Dispose(DisposeTypes type)
75 if (type == DisposeTypes.Explicit)
78 //Release your own managed resources here.
79 //You should release all of your own disposable objects here.
82 //Release your own unmanaged resources here.
83 //You should not access any managed member here except static instance.
84 //because the execution order of Finalizes is non-deterministic.