Click here to Skip to main content
15,890,512 members
Home / Discussions / C#
   

C#

 
AnswerRe: String split [modified] Pin
musefan23-Oct-09 2:42
musefan23-Oct-09 2:42 
GeneralRe: String split Pin
Sebastian T Xavier23-Oct-09 3:23
Sebastian T Xavier23-Oct-09 3:23 
GeneralRe: String split Pin
J4amieC23-Oct-09 4:09
J4amieC23-Oct-09 4:09 
QuestionDestructor peculiarity Pin
DaveyM6923-Oct-09 1:25
professionalDaveyM6923-Oct-09 1:25 
AnswerRe: Destructor peculiarity Pin
Pete O'Hanlon23-Oct-09 1:38
mvePete O'Hanlon23-Oct-09 1:38 
GeneralRe: Destructor peculiarity Pin
DaveyM6923-Oct-09 2:20
professionalDaveyM6923-Oct-09 2:20 
GeneralRe: Destructor peculiarity Pin
Pete O'Hanlon23-Oct-09 2:25
mvePete O'Hanlon23-Oct-09 2:25 
GeneralRe: Destructor peculiarity Pin
Gideon Engelberth23-Oct-09 7:47
Gideon Engelberth23-Oct-09 7:47 
GeneralRe: Destructor peculiarity Pin
DaveyM6923-Oct-09 9:44
professionalDaveyM6923-Oct-09 9:44 
GeneralRe: Destructor peculiarity Pin
DaveyM6923-Oct-09 9:52
professionalDaveyM6923-Oct-09 9:52 
GeneralRe: Destructor peculiarity Pin
cmk23-Oct-09 5:21
cmk23-Oct-09 5:21 
GeneralRe: Destructor peculiarity Pin
DaveyM6923-Oct-09 8:10
professionalDaveyM6923-Oct-09 8:10 
GeneralRe: Destructor peculiarity Pin
DaveyM6923-Oct-09 9:48
professionalDaveyM6923-Oct-09 9:48 
AnswerRe: Destructor peculiarity Pin
Gideon Engelberth23-Oct-09 7:55
Gideon Engelberth23-Oct-09 7:55 
I'd say you are getting lucky.

It seems to me that you have the finalizer in the wrong place. The Manager does not directly own any unmanaged resources. Since the Port class does directly own the unmanaged resources (from the way you describe it), it should be Disposable and have a finalizer that calls Dispose(false) as per the Dispose pattern. Then it does not matter what order things get finalized in by the GC. Port would look something like this:

public class Port : IDisposable
{

   ~Port()
   {
      Dispose(false);
   }

   public void IDisposable.Dispose()
   {
        Dispose(true);
        GC.SupressFinalize(this);
   }
   
   private bool alreadyDisposed;
   protected void Dispose(bool disposing)
   {
      if (!alreadyDisposed)
      {
         if (disposing)
         {
            //clean up managed
         }

         //always clean up unmanaged
         
         alreadyDisposed = true;
      }
   }

   public void Close()
   {
      Dispose();
   }

   //other class code here
}

GeneralRe: Destructor peculiarity Pin
DaveyM6923-Oct-09 9:40
professionalDaveyM6923-Oct-09 9:40 
AnswerRe: Destructor peculiarity Pin
Luc Pattyn27-Oct-09 3:36
sitebuilderLuc Pattyn27-Oct-09 3:36 
GeneralRe: Destructor peculiarity Pin
DaveyM6927-Oct-09 7:04
professionalDaveyM6927-Oct-09 7:04 
GeneralRe: Destructor peculiarity Pin
Luc Pattyn27-Oct-09 7:09
sitebuilderLuc Pattyn27-Oct-09 7:09 
GeneralRe: Destructor peculiarity Pin
DaveyM6927-Oct-09 10:45
professionalDaveyM6927-Oct-09 10:45 
GeneralRe: Destructor peculiarity Pin
Luc Pattyn27-Oct-09 11:17
sitebuilderLuc Pattyn27-Oct-09 11:17 
GeneralRe: Destructor progress report 1 Pin
Luc Pattyn27-Oct-09 17:20
sitebuilderLuc Pattyn27-Oct-09 17:20 
GeneralRe: Destructor progress report 1 Pin
DaveyM6928-Oct-09 8:58
professionalDaveyM6928-Oct-09 8:58 
GeneralRe: Destructor progress report 1 Pin
Luc Pattyn28-Oct-09 9:54
sitebuilderLuc Pattyn28-Oct-09 9:54 
GeneralRe: Destructor progress report 1 Pin
DaveyM6928-Oct-09 10:52
professionalDaveyM6928-Oct-09 10:52 
GeneralRe: Destructor progress report 1 Pin
DaveyM6928-Oct-09 22:19
professionalDaveyM6928-Oct-09 22:19 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.