public static void Close()
 {
     foreach (KeyValuePair <ulong, CPProcTracer> tracer in procTracers)
     {
         int nRef = System.Runtime.InteropServices.Marshal.ReleaseComObject(tracer.Value);
     }
     procTracers.Clear();
     if (tracersFactory != null)
     {
         int nRef = System.Runtime.InteropServices.Marshal.ReleaseComObject(tracersFactory);
         tracersFactory = null;
     }
     GC.Collect();
 }
        public static bool Open()
        {
            if (tracersFactory == null)
            {
                Type   test_srv_type = Type.GetTypeFromCLSID(test_srv_CLSID, true);
                Object obj           = null;
                Guid   IUnknownGuid  = new Guid("00000000-0000-0000-C000-000000000046");
                obj = Activator.CreateInstance(test_srv_type);
                if (obj == null)
                {
                    return(false);
                }
                tracersFactory = obj as ICPTracerFactory;
                if (tracersFactory == null)
                {
                    return(false);
                }
            }

            return(true);
        }