public static void TrackCOMObject(object comObject, Type type)
 {
     if (comObject == null || !Marshal.IsComObject(comObject))
     {
         if (trace)
         {
             Trace("Will not be tracked: {0}", type.Name);
         }
     }
     else
     {
         TrackedObjectMetaData metaData;
         if (trackedCOMObjects.TryGetValue(comObject, out metaData))
         {
             metaData.RefCount += 1;
         }
         else
         {
             metaData = new TrackedObjectMetaData(type, 1);
             trackedCOMObjects.Add(comObject, metaData);
         }
         if (trace)
         {
             Trace("AddRef {0,2}: {1}", metaData.RefCount, type.Name);
         }
     }
 }
		public static void TrackCOMObject(object comObject, Type type)
		{
			if (comObject == null || !Marshal.IsComObject(comObject)) {
				if (trace) Trace("Will not be tracked: {0}", type.Name);
			} else {
				TrackedObjectMetaData metaData;
				if (trackedCOMObjects.TryGetValue(comObject, out metaData)) {
					metaData.RefCount += 1;
				} else {
					metaData = new TrackedObjectMetaData(type,1);
					trackedCOMObjects.Add(comObject, metaData);
				}
				if (trace) Trace("AddRef {0,2}: {1}", metaData.RefCount, type.Name);
			}
		}