C#上位机和松下PLC通讯异常 开30个线程,采用UDP方式,同时向30台PLC发送指令读取数据,然后接受数据判断类型写入到SQL,线程里面使用的是while (ture) 循环方式,现在经常会出现循环停止的现象,循环体里面加的try也不报任何异常,有人知道什么原因吗 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 从逻辑上看,while死循环本身是不会自己中止的。所以要:1.看循环中具体代码,2.看线程开启方式。 1.不工作不一定是循环停止了,也有可能是循环内由于某些原因被阻塞了比如死锁。打出运行日志可能是个比较便捷的方法。2.关注下系统资源占用,先排除有无Handle之类的资源泄露的情况。 谢谢各位,已经解决了,原因是长时间向PLC发送指令,偶尔会出现接收不到PLC返回值的情况,我在接受数据是加了一个判断条件 public void Msg(string b, EndPoint RemotePoint, Socket mySocket, out string LH) { abc.Functioin1(b, out byte[] oun); mySocket.SendTo(oun, oun.Length, SocketFlags.None, RemotePoint);//改 Thread.Sleep(50); if (mySocket.Available == 0) { LH = ""; } else { byte[] Qata = new byte[1024]; int Qrle2 = mySocket.ReceiveFrom(Qata, ref RemotePoint);//改 LH = Encoding.Default.GetString(Qata, 0, Qrle2); } } 表之间关系,如何实现? [高分求算法] 如何计算出集合中最多的重复的数字的重复次数 50分求解:winform中,统计单词个数 求c#编写的邮件服务器代码 我想学习C#.net请问该如何起步? 请教数据库取值 一个关于控件的引用问题 一个MAPINFO + C# 地图加载问题 , 希望高手帮我看看 循环 效率 关于Socket异步编程的一个问题 C#多个线程执行同一个方法,如何实现类似队列形式的一个一个的执行 初学代码,想知道递归中用ref修饰参数的原因 谢谢大佬指点。
1.不工作不一定是循环停止了,
也有可能是循环内由于某些原因被阻塞了
比如死锁。
打出运行日志可能是个比较便捷的方法。
2.关注下系统资源占用,
先排除有无Handle之类的资源泄露的情况。
public void Msg(string b, EndPoint RemotePoint, Socket mySocket, out string LH)
{
abc.Functioin1(b, out byte[] oun);
mySocket.SendTo(oun, oun.Length, SocketFlags.None, RemotePoint);//改
Thread.Sleep(50);
if (mySocket.Available == 0)
{
LH = "";
}
else
{
byte[] Qata = new byte[1024];
int Qrle2 = mySocket.ReceiveFrom(Qata, ref RemotePoint);//改
LH = Encoding.Default.GetString(Qata, 0, Qrle2);
} }