c#Process类、进程与线程(2021-3-20)

1.c#进程类用Process(在命名空间System.Diagnostics中)定义:使用Process添加using System.Diagnostics(VS自动导入命名空间的方法,将光标方法该类后,三击Shift+Alt+F10)
Process可以管理本地计算机的进程的开启关闭:
比如Process.Start(“calc”);可以打开本地的计算器:
在这里插入图片描述
在这里插入图片描述
也可以通过指定的进程打开一个文件:定义一个ProcessStartInfo的对象psi并在new后面传递文件地址,将p赋值给p.StartInfo,这样在p.Start()时便会打开文件:
在这里插入图片描述
2.线程(一个进程由多个线程组成)
(1)线程类Thread,在命名空间System.Threading里
(2)线程对象名.Start();开启线程;
线程对象名.Abort();停止线程;
线程对象名.Suspend();挂起线程;线程对象名.Resume();恢复线程。

(注意:(1)通过Thread.Abort()停下来的线程都无法通过Thread.Start()方法再次启动,必须重新创建一个线程启动;(2)线程类的对象没有Sleep())
程序员不能确定线程什么时候执行,线程对象名.Start()只是标记这个线程准备就绪,这是由CPU决定的。(哪个线程抢到CPU就执行哪个线程,但多个线程同时执行时会轮流执行)。
(3)经典案例(java):
在这里插入图片描述
上述例子中依次创建了三个进程thread1,thread2,thread3,但并不是执行完了thread1里的run()再取执行thread2里的run(),而是三个进程thread1,thread2,thread3的run()一起执行,三个抢占CPU,哪个抢到执行哪个,输出结果也不确定,可能的输出结果:
ThreadA==>0
ThreadB==>0
ThreadC==>0
ThreadA==>1
ThreadB==>1
ThreadC==>1

(4)线程的用法
a.可以以函数名为参数,表示创建一个线程执行该方法。
在这里插入图片描述
b.Sleep()使用
创建了多个线程对象,写了对象名.Start()后这些线程一起执行。在线程中的函数中添加Thread.Sleep()可以使该线程暂停。
在这里插入图片描述
在这里插入图片描述
上述例子将Clock类的对象c的两个函数分别赋给两个线程,所以这两个函数一起执行,且c.getTime()方法里的while循环一秒执行一个循环,而c.getAlarm()方法里的while循环60秒执行一次循环。

下面的例子可以更深入理解Thread.Sleep();
在这里插入图片描述
这段代码中并没有写Thread对象,第一个for语句全部输出完后第二个for语句的内容输出。第一个for语句使用了Thread.Sleep(1000*3),每输出一个数字停顿3秒后再输出下一个。第二个for语句同理。
(5)前台线程和后台线程
在这里插入图片描述
默认线程为前台线程(关闭了主线程(关闭主窗体)前台线程并未关闭),将其改为后台线程的方法后主程序关闭了就会一起关闭:
在这里插入图片描述
3.c#清空控制台内容:
Console.Clear();

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值