当插件被卸载并且 OnDisconnection() 方法运行时,我希望插件产生的所有线程都立即终止。更具体地说,如果其中一个线程或主线程创建了一个消息框,我希望在卸载加载项的那一刻销毁消息框。
我现在看到的行为是,当我卸载插件(工具 - > 管理插件)时,线程会继续在后台运行,并且与插件相关的 UI 一直清晰可见,直到用户手动关闭它。
当插件被卸载并且 OnDisconnection() 方法运行时,我希望插件产生的所有线程都立即终止。更具体地说,如果其中一个线程或主线程创建了一个消息框,我希望在卸载加载项的那一刻销毁消息框。
我现在看到的行为是,当我卸载插件(工具 - > 管理插件)时,线程会继续在后台运行,并且与插件相关的 UI 一直清晰可见,直到用户手动关闭它。
首先也是最重要的,
我希望插件产生的所有 thredas 立即终止。
不,你没有。您想要的是其他线程以正常方式停止运行自己。异步异常(例如ThreadAbortException
)可能会使应用程序处于不良状态,这与您要完成的任务完全相反。
在不知道你的外接程序有多个线程的具体原因的情况下,我只能提出以下建议:
IVsUIShell.ShowMessageBox
方法可能是您要用于此通知的方法。IVsThreadedWaitDialogFactory
是为了解决这个领域的一些问题而创建的。