我有一个使用MAF加载用户创建的插件的Windows服务。这是我加载每个插件的方式:
public bool ActivatePlugin()
{
try
{
_addin = _token.Activate<IAddIn>(AddInSecurityLevel.Host);
return true;
}
catch(Exception ex)
{
AddToLog("Error activating plugin");
return false;
}
}
所有插件都会加载,没有任何问题。我遇到的问题是我无法控制插件的质量,有时它们会崩溃并导致整个服务停止。有没有办法让我正确捕获插件中出现的任何错误,这样就不会使服务崩溃。
答案 0 :(得分:3)
从System.AddIn团队的博客中查看这些文章,了解有关异常处理和加载项的信息:
基本上,安全的唯一方法是在单独的进程中激活加载项。这很简单,因为MAF提供了一种方法,但是你可以想象它在性能方面很昂贵。
请注意,在其他应用程序域中激活加载项并不能保证加载项不会使主机崩溃。如果加载项创建的线程引发了未处理的异常,主机将崩溃。
我知道这个问题有点旧,但其他人可以发现这些信息很有用。