做开发写程序,最麻烦就是写循环。一个程序功能里面如果多于5个循环的,那么要么这个业务逻辑有问题,要么就是开发的人太Yang。用5个循环去做一个业务逻辑,耗时耗资源不说;假设其中有个死循环那就死翘翘了。
但是有时候死循环也有他的妙用,就像我接手的一个用wpf写的程序;客户反馈说程序容易卡死或点击没反应甚至根本没法进入程序。。首先看了一下程序,里面光循环就N多个,然后再不同的业面跳转。。还有WPF因为是坐标定位,所以一不小心就会定位错误,,唉。。但这些问题都不是这次的主问题,主问题是为什么会卡死没反应。。经过一轮问题复现测试后,发现是由于网络不联通导致的。问题找到那就解决吧,在执行相关的业务逻辑前,先判断一下网络是否可用,可用就执行,不可用就提示到可用为止。
于是就先从程序运行前进行网络的检测调用。。网络检测的代码如下:
#region 检测网络状态
bool CheckNET(String ip, int port)
{
bool b = false;
IPEndPoint point = new IPEndPoint(IPAddress.Parse(ip), port);
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
socket.Connect(point);
b = true;
}
catch
{
b = false;
}
finally
{
socket.Close();
}
return b;
}
#endregion
#region 提示框 自动关闭
[DllImport("user32.dll")]
public static extern int MessageBoxTimeoutA(IntPtr hWnd, string msg, string Caps, int type, int Id, int time);//引用DLL
#endregion
到关键了,我们怎么通过这个网络函数进行调用。。代码如下
for (; ; )
{
if (CheckNET("8.8.8.8", 80))
{
break;
}
else {
MessageBoxTimeoutA((IntPtr)0, "当前网络不通", "网络异常", 0, 0, 3000);//30秒后自动关闭
}
Thread.Sleep(1000);
};
for(;;)为死循环,就是不断的执行,当检测到网络通的时候,跳出死循环。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。