zbx1425/BlocklyAts

在未关闭Bve-TrainSim的情况下切换任务,程序出现错误且导致崩溃

winup-zhou opened this issue · 3 comments

使用环境
Bve TrainSim Version 5.7.6224.40815
BlocklyAts v1.1.0.2

出现问题的插件源码
编译出来的插件仅使用了x86版本
https://pastebin.com/R1qa9XKW
https://pastebin.com/qJ9qbA6i

问题描述
在不关闭bve5程序,
从一个指定了含有由BlocklyATS编写的插件的车辆的任务,切换到另一个指定了含有由BlocklyATS编写的插件的车辆的任务时,
程序会报告如下错误,点击确定后崩溃。
image

  • 不是重复打开同一任务,重复打开同一任务不会出现该错误。
  • 两个车辆含有的BlocklyATS编写的插件必须为同一源码编译的插件。

问题复现
1.打开一个指定了含有由BlocklyATS编写的插件的车辆的任务
2.关闭此任务但不关闭bve程序
3.打开另一个指定了含有由BlocklyATS编写的插件(必须为同一源码编译的插件)的车辆的任务
4.出现问题,程序崩溃

10.11 Update:
不是重复打开同一任务,重复打开同一任务不会出现该错误。
两个车辆含有的BlocklyATS编写的插件为同一源码编译的插件。

多谢报告。我这几天看看。

.Net 的程序集(DLL)一旦加载,它就不能被取消加载了,这就很麻烦(关闭线路之后原先的 DLL 插件还保持加载);除非关闭整个程序或者卸载它所在的 AppDomain,不过我就不太懂 AppDomain 怎么用。
这问题估计也和这有关,我还以为我能给它绕过去的(捂脸)

昨天又测试了一下,似乎在不同源码编译的插件之间切换不会出现这个问题。
只有这两个插件源码一模一样的时候才会出现这个问题...