我认为这是一个相当复杂的问题.我有一个C#应用程序,它使用反射的插件架构.应用程序加载插件dll,用户可以启用/禁用它们.启用插件后,主应用程序会启动一个线程来运行插件.在许多情况下,插件可能有多个自己的线程.当我想禁用一个插件时,我正在调用Thread.Abort().这似乎会破坏为插件创建的初始线程,但插件创建的任何其他线程都会继续运行.有没有更好的方法来阻止所有相关的插件线程和主线程?
谢谢.
不要Thread.Abort用于此目的.
添加一个Shutdown方法或类似的插件API,并要求您的插件干净地关闭.如果您需要保护自己免受拒绝关闭的恶意插件的影响,请在他们自己的AppDomain中运行它们并在必要时终止AppDomain.