进程类Process
代码语言:javascript复制Console.WriteLine("Hello World!");
Process[] pros = Process.GetProcesses();
foreach (var item in pros)
{
//获得当前正在运行的进程
//Console.WriteLine(item);
//杀死进程
//item.Kill();
}
//通过进程打开程序
//Process.Start("calc");
通过进程打开指定的文件
//ProcessStartInfo psi = new ProcessStartInfo(@"C:UsersH0772690DesktopTC.exe");
//创建进程对象
//Process p = new Process();
//p.StartInfo = psi;
//p.Start();
//p.StartInfo();
Console.ReadKey();
}
一个进程需要多个线程完成 一个进程是由多个线程组成的。 前台线程:只有所有的前台线程都关闭才能完成程序关闭。 后台线程:只要所有的前台线程结束,后台线程自动结束。 在.net下,是不允许跨线程的访问。 可以让系统不检测线程是否跨线程。
代码语言:javascript复制Control.CheckForIllegalCrossThreadCalls = false;
线程休眠:以毫秒为单位
代码语言:javascript复制Thread.Sleep(300);
示例:
代码语言:javascript复制private void button1_Click(object sender, EventArgs e)
{
//创建一个线程执行这个方法
th = new Thread(Test);
//标记这个线程装备就绪了可以随时被执行 具体啥时候执行执行这个线程由CPU决定
//將线程设置为后台线程
th.IsBackground = true;
th.Start();
}
private void Test() {
for (int i = 0; i < 100000; i )
{
//Console.WriteLine(i);
textBox1.Text = i.ToString();//在.net下,是不允许跨线程的访问。
//解决方法不让系统检查
}
}
private void Form1_Load(object sender, EventArgs e)
{
//取消跨线程的访问 不让他检查了
Control.CheckForIllegalCrossThreadCalls = false;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
//当你点击关闭窗体的时候,判断新线程是否为null
if (th != null)
{
//结束这个线程
th.Abort();
//线程被abort 就不能被启动了
}
}