如何解决统一错误“调用只能从主线程调用”

本文关键字:调用 线程 错误 何解决 解决 | 更新日期: 2023-09-27 18:13:20

我在多人游戏中使用Appwarp api。当我调用Invoke("recoverConnection", 5)时,我得到一个错误。

public void onConnectDone(ConnectEvent eventObj)  
{  
    Log ("onConnectDone : " + eventObj.getResult ());  
    if (eventObj.getResult () == 0)   
    {
        recoveryErrorCode = 0;  
        WarpClient.GetInstance ().JoinRoomInRange (0, 5, true);  
    }   
    else if (eventObj.getResult () == 9)  
    {  
        this.Invoke("recoverConnection", 5);  
    }  
    else if (eventObj.getResult () == 8)   
    {  
        // reconnected  
    }  
}  
void recoverConnection()
{
    WarpClient.GetInstance ().RecoverConnection ();
}

错误是:

只能从主线程调用。

构造函数和字段初始化函数将在加载场景时从加载线程执行。

如何解决统一错误“调用只能从主线程调用”

回调onConnectDone是在一个单独的线程上调用的,所以任何与UI相关的更改或调用功能都需要在主线程上调用。你可以使用任何插件来帮助你从任何副线程调用主线程上的任何方法。你可以看看这个链接。这将帮助你从主线程调用Invoke方法。