如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第9章网络协议与套接字编程9.1进程和线程【例9-1】启动、停止和观察进程。1)新建一个Windows应用程序,设计界面如图9-1所示。2)按照表9-1设置Button和ListBox的属性。3)单击工具箱中的【组件】选项卡,然后将Process组件的一个实例拖到窗体的表面,将该组件的【Name】属性设置为【myProcess】。在Process组件实例的属性窗口中,展开【StartInfo】属性,然后将【FileName】属性设置为【Notepad.exe】。4)添加下列名称空间引用。usingSystem.Diagnostics;5)实现开始记事本、停止记事本和观察所有进程三个按钮事件。privatevoidbuttonStart_Click(objectsender,System.EventArgse){//启动Notepad.exe进程。myProcess.Start();}privatevoidbuttonStop_Click(objectsender,System.EventArgse){Process[]myProcesses;//创建新的Process组件的数组,并将它们与指定的进//程名称(Notepad)的所有进程资源相关联。myProcesses=Process.GetProcessesByName("Notepad");foreach(ProcessinstanceinmyProcesses){//设置终止当前线程前等待的毫秒数instance.WaitForExit(1000);instance.CloseMainWindow();}}privatevoidbuttonView_Click(objectsender,System.EventArgse){this.listBox1.Items.Clear();Process[]processes;//创建Process类型的数组,并将它们与系统内所有进程相关联processes=Process.GetProcesses();foreach(Processpinprocesses){//将每个进程名和进程开始时间加入listBox1中this.listBox1.Items.Add(p.ProcessName+""+p.StartTime.ToShortTimeString());}}9.2C#中线程的开发启动线程在使用线程前,首先要对线程进行初始化,初始化线程使用Thread类的构造函数,原型如下:publicThread(ThreadStartmethodName);其中ThreadStart是一种委托,methodName表示通过委托调用的方法。线程中常用方法有:Start()启动线程。Abort()终止线程。Suspend()挂起执行的线程,还可以用Resume()恢复。Resume()恢复挂起的线程。构造一个线程之后,必须调用线程的start()方法,才能够启动线程的执行。【例9-2】创建两个线程,一个线程循环1000次,每次输出字符a;另外一个线程循环1000次,每次输出字符b。1)新建一个控制台应用程序,修改代码为如下内容:usingSystem;usingSystem.Threading;classTestThread{publicstaticvoidMain(){Threadthread1=newThread(newThreadStart(Method1));Threadthread2=newThread(newThreadStart(Method2));thread1.Start();thread2.Start();}publicstaticvoidMethod1(){for(inti=0;i<1000;i++)Console.Write("a");}publicstaticvoidMethod2(){for(inti=0;i<1000;i++)Console.Write("b");}}2)运行程序.2.让线程休眠在C#中让一个线程休眠是很简单的,实际上就是调用一个Sleep方法,该方法的原型如下:publicstaticvoidSleep(int);//将当前线程阻塞指定的毫秒数。例如:Thread.Sleep(3000);3.销毁线程一个线程在使用完成后,应当及时释放出它占用的内存,即销毁它。在C#中通过调用Abort()方法来销毁一个线程,方法原型如下:publicvoidAbort();例如,