进程
//获得当前程序中所有正在运行的进程//Process[] pros = Process.GetProcesses();//foreach (var item in pros)//{// //不试的不是爷们// //item.Kill();// Console.WriteLine(item);//}//通过进程打开一些应用程序//Process.Start("calc");//Process.Start("mspaint");//Process.Start("notepad");//Process.Start("iexplore", "http://www.baidu.com");//通过一个进程打开指定的文件ProcessStartInfo psi = new ProcessStartInfo(@"C:\Users\SpringRain\Desktop\1.exe");//第一:创建进程对象Process p = new Process();p.StartInfo = psi;p.Start();// p.starConsole.ReadKey();
线程
线程休眠
namespace _16_线程{class Program{static void Main(string[] args){Thread.Sleep(3000);Console.WriteLine("Hello World");Console.ReadKey();}}}
开启,终止线程
//终止线程th.Abort();//启动线程th.Start();
难点。比如主线程创建一个文本框,然后一个新的线程一直改变这个文本框的值。当关闭这个主线程的时候,那么,由主线程创建的文本框肯定也消失了,但是子线程不会立即消失,那么就会发生异常。
c# 好像默认不支持这个样的跨线程访问资源。我们可以禁用检查它
private Thread th;private void button1_Click_1(object sender, EventArgs e){//创建一个线程去执行这个方法th = new Thread(Test);//标记这个线程准备就绪了,可以随时被执行。具体什么时候执行这个线程,//由cpu决定//将线程设置为后台线程th.IsBackground = true;th.Start();}private void Test(){for (int i = 0; i < 10000; i++){//Console.WriteLine(i);textBox1.Text = i.ToString();}}private void Form1_Load(object sender, EventArgs e){//取消跨线程的访问 检查Control.CheckForIllegalCrossThreadCalls = false;}
