zbx1425 / BlocklyAts

Create BVE ATS plugins with a beginner-friendly block-based programming tool. ブロックに基づいた簡単なツールで BVE ATS プラグインを作成。使用积木化的简单编程工具制作BVE ATS插件。
https://www.zbx1425.cn/nautilus/blocklyats
MIT License
20 stars 2 forks source link

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

Open winup-zhou opened 2 years ago

winup-zhou commented 2 years ago

使用环境 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

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

winup-zhou commented 2 years ago

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

zbx1425 commented 2 years ago

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

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

winup-zhou commented 2 years ago

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