From c95e40580ef57d5a1e36e9105ae18dbffe3c3de8 Mon Sep 17 00:00:00 2001 From: "Charles E. Rolke" Date: Mon, 10 Jan 2011 20:43:56 +0000 Subject: .NET Binding for Qpid Messaging, in every .NET object that keeps a reference to unmanaged memory: * Function Cleanup() is deleted and cleanup is moved to Finalizer. * Destructor calls Finalizer. * Finalizer takes a lock before deleting unmanaged memory. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1057350 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/bindings/qpid/dotnet/src/Sender.cpp | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) (limited to 'cpp/bindings/qpid/dotnet/src/Sender.cpp') diff --git a/cpp/bindings/qpid/dotnet/src/Sender.cpp b/cpp/bindings/qpid/dotnet/src/Sender.cpp index a051026e71..584075ef5f 100644 --- a/cpp/bindings/qpid/dotnet/src/Sender.cpp +++ b/cpp/bindings/qpid/dotnet/src/Sender.cpp @@ -67,16 +67,23 @@ namespace Messaging { // Destructor Sender::~Sender() { - Cleanup(); + this->!Sender(); } // Finalizer Sender::!Sender() { - Cleanup(); + msclr::lock lk(this); + + if (NULL != senderp) + { + delete senderp; + senderp = NULL; + } } + // Copy constructor Sender::Sender(const Sender ^ sender) : parentSession(sender->parentSession) @@ -101,17 +108,6 @@ namespace Messaging { } - // Destroys kept object - // TODO: add lock - void Sender::Cleanup() - { - if (NULL != senderp) - { - delete senderp; - senderp = NULL; - } - } - // // Send(msg) // -- cgit v1.2.1