进程和线程
进程和线程
进程
1 //获取当前系统所有进程 2 Process[] pros = Process.GetProcesses(); 3 //关闭进程0 4 //pros[0].Kill(); 5 Process pro = new Process(); 6 //用进程打开文件 7 //pro.StartInfo = new ProcessStartInfo(@"C:\Users\Saul\Desktop\123.txt"); 8 //打开程序 9 //pro.StartInfo = new ProcessStartInfo("mspaint"); 10 //带参数方式 11 pro.StartInfo = new ProcessStartInfo("excel", "-safe"); 12 pro.Start(); 13 //或者直接 14 Process.Start("iexplore", "http://www.baidu.com"); 15 Process.Start("notepad");
16 //用系统打开文件 17 System.Diagnostics.Process.Start(fileName);
线程 主线程处理界面,单线程的话有时候会出现假死,通过多线程解决
线程里的方法如果带参数,必须是Object类型,传参通过.Start(参数)
1 Thread td; 2 private void button1_Click(object sender, EventArgs e) 3 { 4 td = new Thread(Test); 5 //设置为后台线程,前台线程在主线程结束(如主窗口关闭)后,他还会继续运行直到他自己结束; 6 //后台线程在主线程结束时直接结束 7 td.IsBackground = true; 8 //告诉系统td准备就绪,什么时候启动是由cpu觉得,无法控制 9 td.Start("ssssss"); 10 } 11 void Test(object s) 12 { 13 string ss = (string)s; 14 for (int i = 0; i < 10000; i++) 15 { 16 textBox1.Text = i.ToString(); 17 } 18 } 19 private void Form1_Load(object sender, EventArgs e) 20 { 21 //默认不允许跨进程,textBox1是由主进程建立的,所以td无法修改 22 //必须通过以下这句禁止检查是否跨进程 23 Control.CheckForIllegalCrossThreadCalls = false; 24 //但是在这种情况下,关闭主进程时候,有可能出现td还在访问主进程建立的textBox1情况, 25 //以至于textBox1被td占用,主进程无法释放资源。所以在关闭时候,进行判断,强行结束td 26 } 27 private void Form1_FormClosing(object sender, FormClosingEventArgs e) 28 { 29 //判断td是否还在,如果是就结束他 30 if (td != null) 31 { 32 //abort了的进程无法再启动。 33 td.Abort(); 34 } 35 }

浙公网安备 33010602011771号