NexusConnectedClients = []
class Thread1(NexusCore.Thread):
def Run():
global NexusConnectedClients
if(IncomingCommand == "ADDCLIENT"):
NewClientOBJ = [
LastCID,
ClientType,
ClientADDR,
ClientObject,
Args[1],
Args[2],
'{"events":[]}'
]
NexusConnectedClients.append(NewClientOBJ)
elif(IncomingCommand == "LISTCLIENTS"):
SendResponse(NexusConnectedClients)
当我添加客户端时,还可以。当我读取NexusConnectedClients
变量时,它被添加到列表中。但是当我运行 LISTCLIENTS 函数时,列表是空的。怎么了?
我稍微简化了代码。 设置了所有变量,所有其他全局变量都按预期工作。
编辑我发现了错误,这段代码没有任何问题,但另一个函数从NexusConnectedClients
数组中删除了该元素
不需要将NexusConnectedClients
声明为全局,因为它在 run
方法中可见。如果要在全局范围内(重新(绑定名称,则必须将变量声明为全局变量。当变量是可修改的,而列表是可修改的时,只需修改它。
相反,您所要做的就是 规范对NexusConnectedClients
的访问 .您正在修改线程中的共享变量,可能不止一个。使用锁。话虽如此,我想在这么小的片段中不能再说什么了。
解决了这个问题。没有从以前的测试中删除一行代码。该行重置了阵列