当卸载插件并运行OnDisconnection()方法时,我希望立即终止由插件生成的所有thredas。更具体地说,如果其中一个线程或主线程创建了一个MessageBox,我希望在卸载加载项时销毁消息框。
我现在看到的行为是,当我卸载插件(工具 - >管理插件)时,线程会继续在后台运行,并且与插件相关的用户界面保持畅通,直到用户手动关闭它。
答案 0 :(得分:2)
首先,
我希望所有由插件产生的thredas立即终止。
不,你没有。你想要的是其他线程以正常方式停止运行。异步异常(例如ThreadAbortException
)可能会使应用程序处于错误状态,这与您要完成的任务完全相反。
在不知道加载项有多个线程的具体原因的情况下,我只能提出以下建议:
IVsUIShell.ShowMessageBox
方法可能就是您要用于此通知的方法。IVsThreadedWaitDialogFactory
是为解决此空间中的一些问题而创建的。答案 1 :(得分:1)