问题描述
|
我已经开发了一个Web部件,它表现出一种奇怪的行为。当我加载安装页面时,有时它可以正常工作,有时会崩溃,但是我找不到任何模式(对我来说似乎是随机的)。
当我调试它时,我看到它有两个执行线程。 (debug游标总是在单独的线程中的每个函数上传递两次)。怎么可能?
我只希望它是一个线程,并且我还怀疑这可能是随机崩溃的原因。知道从哪里开始发现此错误?
编辑:
在调试中添加了两个屏幕截图
解决方法
这就是线程和共享变量的问题,如果您不同步,您将永远不知道什么时候崩溃。首先,您必须找出为什么会有更多线程访问代码的原因,如果无法“删除”该行为,则必须使用锁或其他一些同步机制来同步对对象中共享的所有变量的访问。 。 (请注意,这样做不会导致任何死锁)。
这里的重点是。如果您无法使代码一次运行,则必须同步对对象中变量的访问,以免崩溃。