进程
//获得当前程序中所有正在运行的进程
//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.star
Console.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;
}