SpriteKit Swift Socket问题

初学SpriteKit,建设OS X平台下的一个2D程序。尝试编写了socket服务端,已经调通。
将显示图片的代码,放在按键事件或didmove函数下,均可以运行。但是,放在socket的数据监听端里,就是无法运行显示图片的代码。使用了线程,还是不行。socket的接收数据代码如下:

//循环接收消息
func messageloop(c: TCPClient){

    while true{

        let thread = Thread(target: self, selector: #selector(GameScene.AGVMove), object: nil)
        thread.start()

        let d = c.read(1024*10)
        c.send(data: d!)

    }
}

        func AGVMove(){

    if let n = spinnyNode?.copy() as! SKShapeNode? {
        n.position = CGPoint(x: positonX, y: 0)
        positonX = positonX - 1
        n.strokeColor = SKColor.red
        self.addChild(n)
    }
}

    请各位大侠提供帮助,谢谢。

最后显示图片的代码要放到UI线程来调用

改成如下,依然不行

func AGVMove(){

    let queue = DispatchQueue.global(qos: .background)

    queue.async{

        DispatchQueue.main.async {

            if let n = self.spinnyNode?.copy() as! SKShapeNode? {
                n.position = CGPoint(x: self.positonX, y: 0)
                self.positonX = self.positonX - 1
                n.strokeColor = SKColor.red
                self.addChild(n)

            }
        }
    }
}

结帖,最终解决方案:
在oyljerry的建议下,进行了各种尝试。最后想了一个取巧的方法,将socket的listen启动放到了didmove里面,这样神马都是浮云了...