单独起了一个线程来处理网络相关操作,比较常规的做法。本身没啥特别的东西,碰到了一个不大不小的坑折腾了好久,记录下来吧。
简单的说就是子线程中抛出的异常,如果没有catch的话,会导致子线程悄无声息的退出,而u3d主线程没有任何反馈,
只有等到业务逻辑出错的时候才发现哪里出毛病了。
解决方法就是可能抛异常的地方都给catch掉,但是代码很难看,或者直接子线程的主循环里面catch一下,然后输出日志。
但是这样也仅仅只是帮助查看分析出错而已,最终还是需要解决掉的,又牵扯到了另一个问题。
主线程中做这些,
void foo()
{
// send msg to server
// balabala1,同时子线程已经再工作了,那么主线程再这里就有可能收到服务器的反馈
// add server msg handler
// balabala2 , 但是msg handler这里才添加,那么就会导致子线程调用msg handler的时候抛异常或者出错。。。所以mg handler需要提前添加
}