2015-12-23 10:20:42 da_keng 阅读数 10569

获取服务

首先要添加引用:System.ServiceProcess
然后导入命名空间:using System.ServiceProcess;

//获得服务集合
var serviceControllers = ServiceController.GetServices();
//遍历服务集合,打印服务名和服务状态
foreach (var service in serviceControllers)
{
    Console.WriteLine("ServiceName:{0}\t\tServiceStatus:{1}", service.ServiceName, service.Status);
}

启动服务

//获取指定服务,若服务状态不是Runing就Start该服务
var server = serviceControllers.FirstOrDefault(service => service.ServiceName == serviceName);
if (server!=null && server.Status != ServiceControllerStatus.Running)
{
    server.Start();
}

开一个线程定期检测服务状态

static void Main()
{
    ThreadPool.RegisterWaitForSingleObject(new AutoResetEvent(true), new WaitOrTimerCallback(TryStartRServer3), null, 30000, false);
}
private static void TryStartRServer3(object state, bool timedout)
{
    var serviceControllers = ServiceController.GetServices();
    var server = serviceControllers.FirstOrDefault(service => service.ServiceName == "RServer3");
    if (server != null && server.Status != ServiceControllerStatus.Running)
    {
        server.Start();
    }
}
2019-02-26 11:09:27 qq_41807260 阅读数 355

C# 判断

判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。

下面是大多数编程语言中典型的判断结构的一般形式:

C# 中的判断语句

判断语句

C# 提供了以下类型的判断语句。点击链接查看每个语句的细节。

语句 描述
if 语句 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。
if...else 语句 一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
嵌套 if 语句 您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。
switch 语句 一个 switch 语句允许测试一个变量等于多个值时的情况。
嵌套 switch 语句 您可以在一个 switch 语句内使用另一个 switch 语句。

If 语句

一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。

实例

using System;

namespace DecisionMaking
{
    
    class Program
    {
        static void Main(string[] args)
        {
            /* 局部变量定义 */
            int a = 10;

            /* 使用 if 语句检查布尔条件 */
            if (a < 20)
            {
                /* 如果条件为真,则输出下面的语句 */
                Console.WriteLine("a 小于 20");
            }
            Console.WriteLine("a 的值是 {0}", a);
            Console.ReadLine();
        }
    }
}

if...else 语句

一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行

实例

using System;

namespace DecisionMaking
{
    
    class Program
    {
        static void Main(string[] args)
        {

            /* 局部变量定义 */
            int a = 100;

            /* 检查布尔条件 */
            if (a < 20)
            {
                /* 如果条件为真,则输出下面的语句 */
                Console.WriteLine("a 小于 20");
            }
            else
            {
                /* 如果条件为假,则输出下面的语句 */
                Console.WriteLine("a 大于 20");
            }
            Console.WriteLine("a 的值是 {0}", a);
            Console.ReadLine();
        }
    }
}

当上面的代码被编译和执行时,它会产生下列结果:

a 大于 20
a 的值是 100

if...else if...else 语句

一个 if 语句后可跟一个可选的 else if...else 语句,这可用于测试多种条件。

当使用 if...else if...else 语句时,以下几点需要注意:

  • 一个 if 后可跟零个或一个 else,它必须在任何一个 else if 之后。
  • 一个 if 后可跟零个或多个 else if,它们必须在 else 之前。
  • 一旦某个 else if 匹配成功,其他的 else if 或 else 将不会被测试。

实例

using System;

namespace DecisionMaking
{
    
    class Program
    {
        static void Main(string[] args)
        {

            /* 局部变量定义 */
            int a = 100;

            /* 检查布尔条件 */
            if (a == 10)
            {
                /* 如果 if 条件为真,则输出下面的语句 */
                Console.WriteLine("a 的值是 10");
            }
            else if (a == 20)
            {
                /* 如果 else if 条件为真,则输出下面的语句 */
                Console.WriteLine("a 的值是 20");
            }
            else if (a == 30)
            {
                /* 如果 else if 条件为真,则输出下面的语句 */
                Console.WriteLine("a 的值是 30");
            }
            else
            {
                /* 如果上面条件都不为真,则输出下面的语句 */
                Console.WriteLine("没有匹配的值");
            }
            Console.WriteLine("a 的准确值是 {0}", a);
            Console.ReadLine();
        }
    }
}

当上面的代码被编译和执行时,它会产生下列结果:

没有匹配的值
a 的准确值是 100

嵌套 if 语句

在 C# 中,嵌套 if-else 语句是合法的,这意味着您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。

实例

using System;

namespace DecisionMaking
{
    
    class Program
    {
        static void Main(string[] args)
        {

            //* 局部变量定义 */
            int a = 100;
            int b = 200;

            /* 检查布尔条件 */
            if (a == 100)
            {
                /* 如果条件为真,则检查下面的条件 */
                if (b == 200)
                {
                    /* 如果条件为真,则输出下面的语句 */
                    Console.WriteLine("a 的值是 100,且 b 的值是 200");
                }
            }
            Console.WriteLine("a 的准确值是 {0}", a);
            Console.WriteLine("b 的准确值是 {0}", b);
            Console.ReadLine();
        }
    }
}

当上面的代码被编译和执行时,它会产生下列结果:

a 的值是 100,且 b 的值是 200
a 的准确值是 100
b 的准确值是 200

 

switch 语句

一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。

switch 语句必须遵循下面的规则:

  • switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。
  • 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
  • case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量。
  • 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
  • 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
  • 不是每一个 case 都需要包含 break。如果 case 语句为空,则可以不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
  • C# 不允许从一个开关部分继续执行到下一个开关部分。如果 case 语句中有处理语句,则必须包含 break 或其他跳转语句。
  • 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
  • C# 不支持从一个 case 标签显式贯穿到另一个 case 标签。如果要使 C# 支持从一个 case 标签显式贯穿到另一个 case 标签,可以使用 goto 一个 switch-case 或 goto default。

实例

using System;

namespace DecisionMaking
{
    
    class Program
    {
        static void Main(string[] args)
        {
            /* 局部变量定义 */
            char grade = 'B';

            switch (grade)
            {
                case 'A':
                    Console.WriteLine("很棒!");
                    break;
                case 'B':
                case 'C':
                    Console.WriteLine("做得好");
                    break;
                case 'D':
                    Console.WriteLine("您通过了");
                    break;
                case 'F':
                    Console.WriteLine("最好再试一下");
                    break;
                default:
                    Console.WriteLine("无效的成绩");
                    break;
            }
            Console.WriteLine("您的成绩是 {0}", grade);
            Console.ReadLine();
        }
    }
}

当上面的代码被编译和执行时,它会产生下列结果:

做得好
您的成绩是 B

 

嵌套 switch 语句

C# 判断 C# 判断

您可以把一个 switch 作为一个外部 switch 的语句序列的一部分,即可以在一个 switch 语句内使用另一个 switch 语句。即使内部和外部 switch 的 case 常量包含共同的值,也没有矛盾。

语法

C# 中 嵌套 switch 语句的语法:

实例

using System;

namespace DecisionMaking
{
    
    class Program
    {
        static void Main(string[] args)
        {
            int a = 100;
            int b = 200;

            switch (a)
            {
                case 100:
                    Console.WriteLine("这是外部 switch 的一部分");
                    switch (b)
                    {
                        case 200:
                        Console.WriteLine("这是内部 switch 的一部分");
                        break;
                    }
                    break;
            }
            Console.WriteLine("a 的准确值是 {0}", a);
            Console.WriteLine("b 的准确值是 {0}", b);
            Console.ReadLine();
        }
    }

当上面的代码被编译和执行时,它会产生下列结果:

这是外部 switch 的一部分
这是内部 switch 的一部分
a 的准确值是 100
b 的准确值是 200

希望对大家有帮助---一个学习的人

2017-08-15 09:39:54 qq_36150051 阅读数 624
C#中判断一个文件是本地还是远程文件?


string loacal="D:\RecordAudio.xml";
string remote="\\10.10.11.90\Case_new\StartRecorAudio_VoiceCheck.xml"


Uri uriLocal=new Uri(loacal);//通过字符串的构造方法,初始化一个uri对象。
Uri uriRemote=new Uri(remote);


Uri.host属性:
uriLocal.host=(string)"";//空
uriRemote.host=(string)"10.10.11.90";


判断方法:
 if uri.Host.Equals(System.String.Empty) ==ture 就是local文件 为false就是远程文件
2012-03-03 14:04:32 iteye_8485 阅读数 56
1. 操作WINDOW服务需要在C#里引入一个类库:System.ServiceProcess

//监测服务是否启动
private bool ServicesExists(string serviceName)
{
bool isbn = false;
//获取所有服务
ServiceController[] services = ServiceController.GetServices();
try
{
foreach (ServiceController service in services)
{
if (service.ServiceName.ToUpper() == serviceName.ToUpper())
{
isbn = true;
break;
}
}
return isbn;
}
catch (Exception ex)
{
return false;
}
}

//启动服务
private bool ServiceStar(string serviceName)
{
bool isbn = false;

try
{
if (ServicesExists(serviceName))
{
ServiceController star_service = new ServiceController(serviceName);
if (star_service.Status != ServiceControllerStatus.Running &&
star_service.Status != ServiceControllerStatus.StartPending)
{
star_service.Start();

for (int i = 0; i < 60; i++)
{
star_service.Refresh();
System.Threading.Thread.Sleep(1000);
if (star_service.Status == ServiceControllerStatus.Running)
{
isbn = true;
break;
}
if (i == 59)
{
isbn = false;
}
}
}
}
}
catch (Exception ex)
{
return false;
}
return isbn;
}

//停止服务
private bool ServiceStop(string serviceName)
{
bool isbn = false;

try
{
if (ServicesExists(serviceName))
{
ServiceController star_service = new ServiceController(serviceName);
if (star_service.Status == ServiceControllerStatus.Running)
{
star_service.Stop();

for (int i = 0; i < 60; i++)
{
star_service.Refresh();
System.Threading.Thread.Sleep(1000);
if (star_service.Status == ServiceControllerStatus.Stopped)
{
isbn = true;
break;
}
if (i == 59)
{
isbn = false;
}
}
}
}
}
catch (Exception ex)
{
return false;
}
return isbn;
}

[url]http://bbs.itzk.com/thread-2617-1-1.html[/url]
2018-12-27 09:59:45 qq_30725967 阅读数 1018

C#判断字符串是否为数字字符串
在进行C#编程时候,有的时候我们需要判断一个字符串是否是数字字符串,我们可以通过以下两种方法来实现。
【方法一】:使用 try{} catch{} 语句。
我们可以在try语句块中试图将string类型的字符串变量转换为int类型,如果该字符串不是数字字符串则会抛出异常,这时在catch语句块中就能捕获异常。一旦发现异常,则不是数字字符串。
我们可以以下三种方式将string类型转换为int类型。
(1) int.Parse(string);
(2) Convert.ToInt16(string); //当数字字符串的位数大于4的时候请使用Convert.ToInt32()
(3) Convert.ToInt32(string);
添加一个文本框TextBox1,和一个按钮Button1,当点击按钮时,判断文本框中的内容是否为数字字符串,是的话则输出转换后的数值。
protected void Button1_Click(object sender, EventArgs e)
{
string message = TextBox1.Text.Trim();
int result;
if(isNumberic(message,out result))
{
string tt=“”);
}
protected bool isNumberic(string message,out int result)
{
//判断是否为整数字符串
//是的话则将其转换为数字并将其设为out类型的输出值、返回true, 否则为false
result = -1; //result 定义为out 用来输出值
try
{
//当数字字符串的为是少于4时,以下三种都可以转换,任选一种
//如果位数超过4的话,请选用Convert.ToInt32() 和int.Parse()

      //result = int.Parse(message);
      //result = Convert.ToInt16(message);
        result = Convert.ToInt32(message);    
        return true;
    }
    catch
    {
        return false;
    }

}
上述方法可以将int改为double,如 double.Parse(),这样就可以判断是否为浮点数字符串
【方法二】:通过正则表达式来判断。
用正则表达式来验证字符串是否为数字字符串。我们要用到Regex类的isMatch()方法。该类在System.Text.RegularExpressions; 您可以通过using System.Text.RegularExpressions;导入命名空间来访问Regex类。也可以直接通过System.Text.RegularExpressions.Regex 来访问。
protected bool isNumberic(string message,out int result)
{
System.Text.RegularExpressions.Regex rex=
new System.Text.RegularExpressions.Regex(@"^\d+KaTeX parse error: Expected 'EOF', got '}' at position 185: … return false; }̲ 通过正则表达式判断是否匹配,…"))
{
//成功
Page.ClientScript.RegisterStartupScript(this.GetType(), “”, “”);
}
补充
//正则匹配
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s| ]\r
匹配HTML标记的正则表达式:/<(.
)>.</\1>|<(.) />/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)(像vbscript那样的trim函数)
匹配Email地址的正则表达式:\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*
匹配网址URL的正则表达式:http://([\w-]+.)+[\w-]+(/[\w- ./?%&=]*)?
以下是例子:
利用正则表达式限制网页表单里的文本框输入内容:
用正则表达式限制只能输入中文:onkeyup=“value=value.replace(/[^\u4E00-\u9FA5]/g,’’)”
onbeforepaste=“clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^\u4E00-\u9FA5]/g,’’))”
1.用正则表达式限制只能输入全角字符: onkeyup=“value=value.replace(/[^\uFF00-\uFFFF]/g,’’)”
onbeforepaste=“clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^\uFF00-\uFFFF]/g,’’))”
2.用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,’’)
"onbeforepaste=“clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^\d]/g,’’))”
3.用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,’’)
"onbeforepaste=“clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^\d]/g,’’))”

C# 判断

阅读数 106

C#判断文件格式

阅读数 1639

没有更多推荐了,返回首页