日期:2014-05-17  浏览次数:20878 次

线程启动的困惑

                MyClient = new TcpClient();
                MyClient.Connect(_strIp, _intPort);                

                thdRecive = new Thread(new ThreadStart(GetData));
                thdRecive.Name = "TcpClient";
                thdRecive.Priority = ThreadPriority.AboveNormal;
                thdRecive.Start();

                resData = new ClsResolveData(setData);

代码运行到thdRecive.Start(); 时就提示线程已经销毁,困惑!不加后面一句resData = new ClsResolveData(setData);就可以正常启动,请问是什么原因啊?

------解决方案--------------------
resData = new ClsResolveData(setData);
这句是干嘛的?setData和GetData有什么关系?
------解决方案--------------------
是啊,最后一句,跟线程有什么关系,你可以把启动线程的代码放到最后一句
------解决方案--------------------
setData里面的逻辑有问题吧。最好吧getData和setData代码贴出来。。。

------解决方案--------------------
                            //调用拆包类
                            resData.ResolveData(dataTmp); 
你这个resData定义了吗?

                resData = new ClsResolveData(setData);
                thdRecive.Start();
这样吧?
或者你要做非空判断吧吧。不然会出异常的啊。
 

------解决方案--------------------
resData = new ClsResolveData(setData);应该是跟线程方法有关系,你换到线程方法里面试试
------解决方案--------------------
if 里面出异常了,然后你的线程就抛异常了,可能没有捕捉到,修改一下异常捕捉应该可以知道是哪里的问题