C# 托管COM对象是否可以卸载或终止自身?

C# 托管COM对象是否可以卸载或终止自身?,c#,exception,com,mutex,C#,Exception,Com,Mutex,我有一个用C#编写的COM对象,它是Windows任务栏(实现IDeskSite)的工具栏。我想 如果某个应用程序正在运行,请防止加载任务栏 允许工具栏在发生未处理的异常时卸载自身,而不是允许异常导致资源管理器崩溃 对于#1,我知道我可以使用互斥来检查应用程序是否正在运行,但我不确定如何防止explorer.exe进程继续加载COM对象,或者如何通知进程对象有错误,需要卸载。让我们谈谈方法#1。 查看接口IClassFactory-任何(!)COM对象都是在默认情况下创建的,或者是由您实现的对象

我有一个用C#编写的COM对象,它是Windows任务栏(实现IDeskSite)的工具栏。我想

  • 如果某个应用程序正在运行,请防止加载任务栏

  • 允许工具栏在发生未处理的异常时卸载自身,而不是允许异常导致资源管理器崩溃

  • 对于#1,我知道我可以使用互斥来检查应用程序是否正在运行,但我不确定如何防止explorer.exe进程继续加载COM对象,或者如何通知进程对象有错误,需要卸载。

    让我们谈谈方法#1。
    查看接口IClassFactory-任何(!)COM对象都是在默认情况下创建的,或者是由您实现的对象创建的。因此,只需通过检查是否可以创建类实例来实现这一点

    也许您可以让它加载,但仅当某些应用程序正在运行时才显示UI/工具栏。我假设UI/工具栏是在运行时创建的。是的,UI是在运行时创建的。