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

POLL LOCK有关问题

2013-08-27 
POLLLOCK问题。//如果有消息通知时,才查询数据库while (!backgroundWorkerForEvent.CancellationPending){b

POLL LOCK问题。


//如果有消息通知时,才查询数据库
            while (!backgroundWorkerForEvent.CancellationPending)
            {
                byte[] arrMsgRec = new byte[100];
                // 将接受到的数据存入到输入  arrMsgRec中;  
                int length = -1;
                try
                {
                    lock (DoNetWork.lockObj)
                    {
                        if (DoNetWork.sockClient.Poll(1000, SelectMode.SelectRead))
                        {
                            length = DoNetWork.sockClient.Receive(arrMsgRec); // 接
                           
                        }
                        else
                        {
                           ...
                        }
                    }
                }
}

这是后台线程接收消息通知的,


现在的问题是,在未知的情况下,TCP 接收不到信息(其它工具检测是有信息接收的)
其它线程里的DoNetWork.SendMsg还可以继续发送信息
WIRESHARK里显示KEEPALIVE是保持的
1.因为是在未知的情况下才发生的,不知该如何做情景再现。有什么办法?
2.这个问题的原因是在哪里。POLL? LOCK?
[解决办法]
你这线程是同步的,还lock了一次操作.可能是LOCK时间太长,造成了意外,消息被技弃
对于一对多的情况,最好采用异步接收处理,每次接收不会相互影响
[解决办法]
TCP通信阿

你这代码不全,错误描述不清。
多少客户端?一个连不上,还是多个? 有没有重连? 错误信息?

热点排行