首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Thread 线程得到引用,但是为何却能依旧保持接收客户端套接字

2014-01-19 
Thread 线程失去引用,但是为何却能依旧保持接收客户端套接字?如下这一小段代码,Thread 线程失去引用,但是

Thread 线程失去引用,但是为何却能依旧保持接收客户端套接字?
如下这一小段代码,Thread 线程失去引用,但是为何却已然能保持接收客户端套接字?


        Socket socketCommunication = null;
        private void Watch()
        {
            while (true)
            {
                socketCommunication = socketWatch.Accept();
                dictCommunication.Add(socketCommunication.RemoteEndPoint.ToString(), socketCommunication);
             lbSocketOnline.Items.Add(socketCommunication.RemoteEndPoint.ToString());

              // 此处这个 thread 每次都会在新客户端连接后 new 出新对象,但我并没有保存这个 thread 的引用,理论上应该已经丢失引用成为垃圾了
                Thread thread = new Thread(() =>
                {
                    while (true)
                    {
                        byte[] bytes = new byte[1024 * 1024 * 2];
                        int length = socketCommunication.Receive(bytes);
                        string msg = Encoding.UTF8.GetString(bytes, 0, length);
                        ShowMsg("接收到来自" + socketCommunication.RemoteEndPoint.ToString() + "的数据:" + msg);
                    }
                });
                thread.IsBackground = true;
                thread.Start();
                ShowMsg("客户端连接成功!通信地址为:" + socketCommunication.RemoteEndPoint.ToString());
            }
        }


[解决办法]
你不引用,不等于线程不存在啊,while一直再循环
[解决办法]
其实你创建的线程 一直被主进程引用,除非你手动终止线程 或主进程退出
[解决办法]
你让一民工去写代码,在小本子上记了一笔,然后把本子扔了,那民工还是傻乎乎的在写代码,而你却认为他已经下班了。

热点排行