08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活。此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/details/7747205
线程与进程
通过查阅MSDN中C#关于Process类和Thread类的内容设计如下要求的一段程序:
在程序中打开两个后台线程(background=false),分别控制两个Process类,用这两个类分别循环打开和关闭相应进程,并在前台面板中记录相应的信息
比如:打开两个后台线程A和B,在A线程中实例化一个Process类Pa,在B线程中实例化一个Process类Pb。然后两个线程同时进入循环分别做如下操作:
用Pa打开记事本程序,并记录记事本进程的所有可显示信息,然后关闭并记录信息,再打开记事本程序,并记录记事本进程的所有可显示信息,然后关闭并记录信息。。。。。。。。。。(做成死循环)记录你所控制的进程的创建,运行,结束时的全部时间及PCB信息
用Pb打开计算器程序,并记录记事本进程的所有可显示信息,然后关闭并记录信息,再打开记事本程序,并记录记事本进程的所有可显示信息,然后关闭并记录信息。。。。。。。。。。(做成死循环)记录你所控制的进程的创建,运行,结束时的全部时间及PCB信息
附:前台窗体名称为你的姓名与学号,所控制的程序不局限为记事本和计算器,在完成基本内容的基础上对程序作出功能修改的可加分
【实验步骤】
1.查阅MSDN中C#关于Process类和Thread类
MSDN中有Process类详尽的解释及属性方法介绍,并有实例(Thread相对简陋些),此处不再赘述。
Process组件提供了对运行在计算机上进程的访问。
进程是一个运行的应用程序,或者说是一个容器,应用程序运行后,就相当于将应用程序装进容器(还可以装载变量数据,引用的DLL文件等)。线程是操作系统向进程分配处理器时间的基本单位。线程可执行进程的任何代码,包括当前由另一线程执行的部分。如启动、停止、监视应用程序等。
2.创建后台线程A, 实例化一个Process类Pa,循环打开关闭记事本,并记录信息
Thread A;
A = new Thread(new ThreadStart(exeNotepad));
A.IsBackground = true;
A.Start();
//声明一个委托,用以解决控件绑定到特定线程抛出的InvalidOperationException异常
delegate void setRtbHandler(string s);
private void setRtb(string s)
{
tabPage2.Controls[0].Text += s;
}
/// <summary>
///循环打开、关闭记事本程序的进程¬
/// </summary>
private void exeNotepad()
{
Process Pa;
try
{
int i = 1;
while (true)
{
/打开并关闭记事本程序
Pa = Process.Start("Notepad");
//
sA= "第" + i + "次打开记事本程序" + "\n";
sA= printProcessInfo(Pa) + "\n" + &#