void OnDisable()
        {
            // Make sure all task are stopped before quitting
            if (m_ReflectPipeline != null)
            {
                m_ReflectPipeline.ShutdownPipeline();
            }

            m_ProjectsLister?.Dispose();
            m_ReflectClient?.Dispose();

            update = null;
        }
        public static void Dispose()
        {
            if (s_ProjectLister != null)
            {
                s_ProjectLister.projectListingCompleted -= OnProjectListingCompleted;

                s_ProjectLister.Dispose();
                s_ProjectLister = null;
            }

            if (s_ProjectsManager != null)
            {
                s_ProjectsManager.projectStatusChanged           -= OnProjectStatusChanged;
                s_ProjectsManager.projectDownloadProgressChanged -= OnProjectDownloadProgressChanged;
                s_ProjectsManager.projectDeleteProgressChanged   -= OnProjectDeleteProgressChanged;

                s_ProjectsManager.Dispose();
                s_ProjectsManager = null;
            }
        }