1. 以上测试可以看出,如果插件调用的是一个常规带wait的async异步函数,则插件一定会卸载失败.
原因推测是返回的结果是编译器自动生成的状态机实现的,而状态机是在插件中定义的.
2. 如果在插件中使用Task.Factory.StartNew函数也会调用失败,原因不明.
官方文档说和Task.Run函数是Task.Factory.StartNew的简单形式,只是参数不同.
按照官方提供的默认参数测试,卸载仍然失败.说明这两种方式实现底层应该是不同的.
八.正确卸载插件的方式
任何与插件相关的非局部变量,不能定义在类中,如果想全局调用只能放到Dictionary中,
在调用插件卸载之前,删除相关键值.
任何通过插件返回的变量,不能为插件内定义的变量类型.尽量使用json传递参数.
插件入口函数尽量使用同步函数,如果为异步函数,只能使用Task.Run方式裹所有逻辑.
如果有任何疑问或不同意见,请赐教.
NFinal2开源框架。https://git.oschina.net/LucasDot/NFinal2/tree/master
到此这篇关于.Net core 的热插拔机制的深入探索及卸载问题求救指南的文章就介绍到这了,更多相关.Net core热插拔机制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章: