Disposable objects should follow standard disposable implementation pattern
---------------------------------------------------------------------------

                 Key: AMQNET-50
                 URL: https://issues.apache.org/activemq/browse/AMQNET-50
             Project: ActiveMQ .Net
          Issue Type: Bug
          Components: ActiveMQ Client
         Environment: Windows XP SP2, .NET 2.0
            Reporter: Jim Gomes
            Assignee: James Strachan
            Priority: Minor


Objects that implement the IDispose interface and have unmanaged resources 
should use the dispose pattern that uses an internal method to dispose of the 
objects and then turns off the finalizer call from the garbage collector.  This 
allows for safe and efficient disposable of unmanaged resources.

The following objects implement the IDisposable interface and have attachments 
to unmanaged resources.  

ActiveMQ.Connection
ActiveMQ.Session
ActiveMQ.MessageProducer
ActiveMQ.MessageConsumer

The basic pattern is as follows:

class Disposable : public IDispose
{
    private bool disposed = false;

    ~Disposable()
    {
        Dispose(false);
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected void Dispose(bool disposing)
    {
        if(disposed)
        {
            return;
        }

        if(disposing)
        {
            // Dispose managed code here
        }

        // Dispose unmanaged code here

        disposed = true;
    }
}


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to