进程
我们可以通过代码来打开一些应用程序或文件,这时候就用到了进程Process类
通过进程打开一些应用程序
Process.Start("calc");
Process.Start("mspaint");
Process.Start("notepad");
Process.Start("iexplore", "http://www.baidu.com");
通过一个进程打开制定的文件
首先我们需要创建进程对象
Process p = new Process();
然后将要执行的文件传给p
ProcessStartInfo psi = new ProcessStartInfo(@"C:\Users\Flame Master\Desktop\学习记录.txt");
p.StartInfo = psi;
p.StartInfo.UseShellExecute = true;
p.Start();
Console.ReadKey();
线程
为什么要使用线程?
private void Test()
{
for (int i = 0; i < 10000000; i++)
{
textBox1.Text = i.ToString();
}
}
假如我们让程序执行这个方法,那么主线程会一直执行这个循环,使得我们的窗体陷入假死(动不了)。
在写程序的时候,我们肯定不希望这种事经常发生,所以我们使用线程,让一个新的线程去执行这个方法,主线程就不会进入假死了。
产生线程的四个步骤
1.编写产生线程所要执行的方法(如果线程执行的方法需要参数,那么要求这个参数必须是object类型。在线程名.Start();里面传参数)
2.引用System.Threading命名空间
3.实例化Thread类。并传入一个指向线程所要运行方法的委托(这个时候线程已经产生但是还没有运行)
4.调用Thread实例和Start方法,标记该线程可以被cpu执行了,但具体执行时间由cpu决定
前台线程和后台线程
前台线程:只有所有的前台线程都关闭才能完成程序关闭
后台线程:只要所有的前台线程结束,后台线程自动结束
//创建一个线程去执行这个方法
Thread th = new Thread(Test);
//将线程设置为后台线程
th.IsBackground = true;
th.Start();
.net下是不允许跨线程访问的,所以,我们在窗体加载的时候,取消跨线程的访问。
private void Form1_Load(object sender, EventArgs e)
{
//取消跨线程的访问
Control.CheckForIllegalCrossThreadCalls = false;
}
让线程暂停一段时间,参数给毫秒:Thread.Sleep();
结束这个线程:th.Abort();(执行这个方法,就不能再用Start了)
线程的作用
1.让计算机"同时"做多件事情,节约时间。
2.多线程可以让一个程序“同时”处理多个事情。
3.后台运行程序,提高程序的运行效率,也不会使主界面出现无响应的情况。
4.获得当前线程和当前进程