jinjiajie
jinjiajie
额,我自己尝试改了下,我的想法是把注入这边的代码改一下,当判断isPatched函数和gen patch对array的引用一次先hold住然后直接调用warp。。。但是测试工程里好的,挪到正式项目里不知道咋搞的整体依旧写炸了,还需要研究下
额,发现主要问题是在我在注入的地方加了个临时变量,大多数情况下面的 ilProcessor.InsertBefore(insertPoint, ilProcessor.Create(OpCodes.Stloc_S, t2)); ilProcessor.InsertBefore(insertPoint, ilProcessor.Create(OpCodes.Ldloc_S, t2)); 最终注入的code的位置是对的,但是有时候会从200多变成只有20多。。这个是啥原因啊。。。
哦,我知道了。。stloc就好了。。指令不熟。。
我试了下多线程的问题似乎好了,敢那么做的原因是我发现加载的时候你其实每个warp hold了自己virtualMachine,所以不是太担心执行的时候挂了,所以唯一的问题是访问数组的时间点多线程在操作,所以在每个操作前将warpArrary固定住后应该就能解决这个问题了
不是,直接赋值到一个临时变量上