[ 
https://issues.apache.org/activemq/browse/AMQNET-50?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40055
 ] 

Jim Gomes commented on AMQNET-50:
---------------------------------

Aaagh!  The formatting of the code snippet is all messed up.  Should have read 
the help on how to format code.  Too bad I can't edit the original description. 
 Let's try formatting this again:

{code:title=Disposable Pattern|borderStyle=solid}
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;
    }
}
{code}


> 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
>   Original Estimate: 1 hour
>  Remaining Estimate: 1 hour
>
> 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