c#并非所有的代码路径都返回值 大虾们帮忙下 看看哪里出错了。这是检测本地网络连接的。

[复制链接]
查看11 | 回复3 | 2010-9-7 17:39:52 | 显示全部楼层 |阅读模式
private int ServiceController(string[] args, string ServiceName, string netWorkName)

{

int Status = 0;

Ping p = new Ping();//创建ping对象p

PingReply pr = p.Send("123.154.56.1");//想IP地址或主机发送ICMP协议的ping数据包;

if (pr.Status == IPStatus.Success)//如果ping成功;

{

Console.WriteLine("网络连接成功");

}

else

{

int times = 0;//重新连接次数;

do

{

if (times >= 12)

{

Console.WriteLine("重新尝试连接超过12次,连接失败程序结束");



System.ServiceProcess.ServiceController sc = new System.ServiceProcess.ServiceController();

sc.ServiceName = ServiceName;

if (sc.Status == System.ServiceProcess.ServiceControllerStatus.Running)

{

sc.Stop();

sc.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Stopped);

Status = 0;

}

else if (sc.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)

{

sc.Start();

sc.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Running);

Status = 1;

}

return Status;

}

Thread.Sleep(600000);//等待10分钟;

pr = p.Send("123.154.56.1");

Console.WriteLine(pr.Status);

times++;

}

while (pr.Status != IPStatus.Success);

Console.WriteLine("连接成功");

times = 0;//连接成功,重新连接次数清0;

}

}

}

回复

使用道具 举报

千问 | 2010-9-7 17:39:52 | 显示全部楼层
函数结束时确保有返回值,你的返回值都在条件语句里,有可能不返回的所以最后函数结束前需要加一句 return Status;就行了在调用函数时if (ServiceController(XX,X)==0 ) xxx;else yy;
回复

使用道具 举报

千问 | 2010-9-7 17:39:52 | 显示全部楼层
将返回类型改成void类型的如下:private void ServiceController(string[] args, string ServiceName, string netWorkName)在调用此函数的时候,直接用ServiceController(args, ServiceName,netWorkName)
回复

使用道具 举报

千问 | 2010-9-7 17:39:52 | 显示全部楼层
else if (sc.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)和它并列的没有else{}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行