2002-08-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
authorGonzalo Paniagua Javier <gonzalo.mono@gmail.com>
Wed, 28 Aug 2002 02:30:24 +0000 (02:30 -0000)
committerGonzalo Paniagua Javier <gonzalo.mono@gmail.com>
Wed, 28 Aug 2002 02:30:24 +0000 (02:30 -0000)
* System.ComponentModel/Component.cs:
* System.ComponentModel/ComponentCollection.cs:
* System.ComponentModel/Container.cs:
* System.ComponentModel/MarshalByValueComponent.cs:
* System.Diagnostics/Process.cs:
* System.Diagnostics/TextWriterTraceListener.cs:
* System.IO/FileSystemWatcher.cs:
IDisposable fixes.

svn path=/trunk/mcs/; revision=7117

mcs/class/System/ChangeLog
mcs/class/System/System.ComponentModel/ChangeLog
mcs/class/System/System.ComponentModel/Component.cs
mcs/class/System/System.ComponentModel/ComponentCollection.cs
mcs/class/System/System.ComponentModel/Container.cs
mcs/class/System/System.ComponentModel/MarshalByValueComponent.cs
mcs/class/System/System.Diagnostics/ChangeLog
mcs/class/System/System.Diagnostics/Process.cs
mcs/class/System/System.Diagnostics/TextWriterTraceListener.cs
mcs/class/System/System.IO/ChangeLog
mcs/class/System/System.IO/FileSystemWatcher.cs

index 2ce0d0df4629f33e02d89c8087823d310444ce6f..1eb0999c3cdec8f685ae440c26d12e3df185e9cb 100644 (file)
@@ -1,3 +1,14 @@
+2002-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+       * System.ComponentModel/Component.cs:
+       * System.ComponentModel/ComponentCollection.cs:
+       * System.ComponentModel/Container.cs:
+       * System.ComponentModel/MarshalByValueComponent.cs:
+       * System.Diagnostics/Process.cs:
+       * System.Diagnostics/TextWriterTraceListener.cs:
+       * System.IO/FileSystemWatcher.cs:
+       IDisposable fixes.
+
 2002-08-15  Tim Coleman <tim@timcoleman.com>
        * list.unix: Added System.IO files.
 
index ee1c1f0816c428961946c82a5dde9f8bd2e3184e..f773db581604984e4b5b51514c64f2dec3520bec 100644 (file)
@@ -1,3 +1,10 @@
+2002-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+       * Component.cs:
+       * ComponentCollection.cs:
+       * Container.cs:
+       * MarshalByValueComponent.cs: IDisposable fixes.
+
 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
 
        * BindableSupport.cs:
index 78bc0139ca3f1e72c23c67fcd126861531dedd0b..f52975abd66a75598dcf1a3c124264e936670eec 100644 (file)
@@ -22,6 +22,7 @@ namespace System.ComponentModel {
 
                EventHandlerList event_handlers;
                ISite            mySite;
+               object disposedEvent = new object ();
 
                // <summary>
                //   Component Constructor
@@ -72,23 +73,18 @@ namespace System.ComponentModel {
                        }
                }
 
-               [MonoTODO]
                ~Component()
                {
-                       // FIXME: Not sure this is correct.
-                       Dispose(true);
+                       Dispose (false);
                }
 
                // <summary>
                //   Dispose resources used by this component
                // </summary>
-               [MonoTODO]
                public void Dispose ()
                {
-                       // FIXME: Not sure this is correct.
-                       Dispose(false);
-                       if (Disposed != null)
-                               Disposed(this, EventArgs.Empty);
+                       Dispose (true);
+                       GC.SuppressFinalize (this);
                }
 
                // <summary>
@@ -104,6 +100,12 @@ namespace System.ComponentModel {
                // </remarks>
                protected virtual void Dispose (bool release_all)
                {
+                       if (release_all) {
+                               EventHandler eh = (EventHandler) Events [disposedEvent];
+                               if (eh != null)
+                                       eh (this, EventArgs.Empty);
+                       }
+                       mySite = null;
                }
 
                // <summary>
@@ -123,10 +125,17 @@ namespace System.ComponentModel {
                        return String.Format ("{0} [{1}]", mySite.Name, GetType ().ToString ());
                }
                // <summary>
-               //   FIXME: Figure out this one.
+               //   This event is called when the component is explicitly disposed.
                // </summary>
-               [MonoTODO ("Figure this out")]
-               public event EventHandler Disposed;
+               public event EventHandler Disposed
+               {
+                       add {
+                               Events.AddHandler (disposedEvent, value);
+                       }
+                       remove {
+                               Events.RemoveHandler (disposedEvent, value);
+                       }
+               }
        }
        
 }
index 548a3b6e1b0950192b39830d82381e7272fa5ca9..80b85cf616de218a964c12772af17891011ed4f2 100644 (file)
@@ -48,12 +48,6 @@ namespace System.ComponentModel {
                        throw new NotImplementedException ();
                }
 
-               [MonoTODO ("this probably shouldn't be here.")]
-               public void Dispose ()
-               {
-                       throw new NotImplementedException ();
-               }
-
                #endregion // Methods
                
        }
index f1b6b58abb6685cb007e17b44ca697c89891b084..d7eab7390ff677112ed3fd3f3c00020cf1f5a1f3 100644 (file)
@@ -132,13 +132,18 @@ namespace System.ComponentModel {
                {
                        if (disposed)
                                return;
+                       disposed = true;
 
                        if (release_all){
-                               cc.Dispose ();
-                               cc = null;
+                               //??
                        }
 
-                       disposed = true;
+                       cc = null;
+               }
+
+               ~Container ()
+               {
+                       Dispose (false);
                }
 
                [MonoTODO]
index 22141db2343473283016254c7f4ce6f017d82363..0a701ff45d7391ed4c8310ca1183901c7368c325 100644 (file)
@@ -22,16 +22,28 @@ namespace System.ComponentModel
                        //        but do not throw a NotImplementedException
                }
 
-               [MonoTODO]
-               public void Dispose () {
-                       // TODO: need to do, but do not
-                       // throw a NotImplementedException
+               public void Dispose ()
+               {
+                       Dispose (true);
+                       GC.SuppressFinalize (this);
                }
 
                [MonoTODO]
-               protected virtual void Dispose (bool disposing) {
+               protected virtual void Dispose (bool disposing)
+               {
+                       if (disposing) {
+                               // free managed objects contained here
+                       }
+
+                       // Free unmanaged objects
+                       // Set fields to null
                }
 
+               ~MarshalByValueComponent ()
+               {
+                       Dispose (false);
+               }
+               
                [MonoTODO]
                public virtual object GetService (Type service) {
                        return null;
index d65e237f3d8a3aa87f89f02f29db97f5411c1cf3..aca9870c4fed32a1b1669f7597881bae89466628 100644 (file)
@@ -1,3 +1,8 @@
+2002-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+       * Process.cs:
+       * TextWriterTraceListener.cs: IDisposable fixes.
+
 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
 
        * Process.cs: class status based fixes.
index 2c5281dd4e6cba8aad7df21ca4ecdabe97946679..7d9ace3a8ef7686d7a43116f7db0d5c4bcf7e0a2 100755 (executable)
@@ -568,6 +568,7 @@ namespace System.Diagnostics {
                protected override void Dispose(bool disposing) {
                        // Check to see if Dispose has already been called.
                        if(this.disposed) {
+                               this.disposed=true;
                                // If this is a call to Dispose,
                                // dispose all managed resources.
                                if(disposing) {
@@ -575,7 +576,6 @@ namespace System.Diagnostics {
                                }
                                
                                // Release unmanaged resources
-                               this.disposed=true;
 
                                lock(this) {
                                        if(process_handle!=IntPtr.Zero) {
@@ -585,12 +585,7 @@ namespace System.Diagnostics {
                                        }
                                }
                        }
-               }
-
-               public new void Dispose() {
-                       Dispose(true);
-                       // Take yourself off the Finalization queue
-                       GC.SuppressFinalize(this);
+                       base.Dispose (disposing);
                }
 
                [MonoTODO]
index e2c6129640dd9709b4adccfca2c87768ba8fd119..8823d8b46b1cb96525d080e3bbc21d5b200ee51d 100644 (file)
@@ -81,6 +81,8 @@ namespace System.Diagnostics {
                {
                        if (disposing)
                                Close ();
+
+                       base.Dispose (disposing);
                }
 
                public override void Flush ()
index 88e79691b0133f58984fae926609ec39e21f3bdc..fb37a54651c6f1e9575d468603bcda2cd5187445 100755 (executable)
@@ -1,3 +1,7 @@
+2002-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+       * FileSystemWatcher.cs: IDisposable fixes.
+
 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
 
        * InternalBufferOverflowException.cs:
index d5003bb912f21d36575fbe4f10622d6a7763b82d..9501435e22aef105ebaafb55c02ed8b0caea892d 100644 (file)
@@ -118,7 +118,10 @@ namespace System.IO {
                [MonoTODO]\r
                protected override void Dispose (bool disposing)\r
                {\r
-                       throw new NotImplementedException (); \r
+                       if (disposing) {\r
+                               // \r
+                       }\r
+                       base.Dispose (disposing);\r
                }\r
 \r
                [MonoTODO]\r