vb 关于单线程call久了出错的办法!

来源:百度知道 编辑:UC知道 时间:2024/06/21 20:31:49
Function 捡物(方向 As Long)
Dim asm As New clsASM
Const address = &H404E34
Const Address1 = &H476CE0
With asm
.Pushad
.Mov_EAX &H7527022
.Push 方向
.Mov_ECX Address1
.Mov_EDX address
.Call_EDX
.Popad
.Ret
asm.Run_ASM pid
End With
End Function
call 捡物(1)
加在一个循环里...如:timer1控件里...用一会就会出错..请问如何解决? 加个SyncLock...行不行...如果行的话...请问SyncLock怎么写

把代码贴出来看看。应该不是call的问题

把对象 set nothing 试试。

1、把 Const 移出function 虽然这么写不会错,但是风格不好。
2、在function 最后 加上 set asm = nothing
3、如果 asm.Run_ASM 这句运行需要很长时间,那么有可能出现同步调用错误。
timer本身就是线程。所以如果 asm.Run_ASM 没有执行完毕,timer又一次进入循环,可能报错。
解决方法 : 进入function的时候把timer停掉,退出function的时候在启用timer控件。

个人意见,试试吧。如果不是1和2没有错误的话,肯定是timer的错。和call没关系