我正在为我的应用程序设计一个插件系统。
UI 中有一个“开始”按钮。当用户点击它时,应用程序应该异步调用插件 dll 中的一个方法,并将“开始”更改为“停止”。该方法可以包括几乎任何东西,就像插件一样。当用户单击“停止”时,该异步方法应立即终止。
我想用Thread.Abort();
,但大家建议不要用。如果我使用 CancellationTokenSource,我必须为所有插件添加取消处理,我不想这样做。
我需要一台 PC 的强制关机、拔出或销毁(如果需要!)之类的东西。对我来说唯一重要的是立即停止。不需要清理或类似的事情,因为我的应用程序在使用它后会卸载插件,并且插件与主应用程序代码无关。
反正没有异步启动一个方法并完全控制它吗?在这种情况下可以使用Thread.Abort();
(如果我保证 dll 不会捕获线程中止异常)?
编辑:有没有办法在运行方法时异步主动监视插件dll(类)中的取消令牌,并在请求时杀死方法?
EDIT2:我认为这不是一个好主意,但是创建一个新流程和使用Process.kill()
呢?