第15章 进程、线程与网络协议.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:59 大小:179KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第15章 进程、线程与网络协议.ppt

第15章进程、线程与网络协议.ppt

预览

免费试读已结束,剩余 49 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第一章进程、线程与网络协议1.1进程和线程1.1进程和线程(续)1.1.1Process类例.启动、停止和观察进程privatevoidbuttonStop_Click(objectsender,EventArgse){//创建新的Process组件的数组,并将它们与指定的进程名称(Notepad)的所有进程资源相关联.Process[]myprocesses;myprocesses=Process.GetProcessesByName("Notepad");foreach(Processinstanceinmyprocesses){//设置终止当前线程前等待1000毫秒instance.WaitForExit(1000);instance.CloseMainWindow();}}privatevoidbuttonView_Click(objectsender,EventArgse){listBox1.Items.Clear();//创建Process类型的数组,并将它们与系统内所有进程相关联Process[]processes;processes=Process.GetProcesses();foreach(Processpinprocesses){//由于访问Idle的StartTime会出现异常,所以将其排除在外if(p.ProcessName!="Idle"){//将每个进程名和进程开始时间加入listBox1中this.listBox1.Items.Add(string.Format("{0,-30}{1:h:m:s}",p.ProcessName,p.StartTime));}}}1.1.2Thread类1.1.2Thread类(续)1.1.2Thread类(续)1.1.2Thread类(续)1.1.2Thread类(续)1.1.2Thread类(续)1.1.2Thread类(续)例.在程序中使用线程sb.Append(s);}}publicvoidMethod1(){while(true){Thread.Sleep(100);//线程休眠100毫秒AppendString("a");}}publicvoidMethod2(){while(true){Thread.Sleep(100);//线程休眠100毫秒AppendString("b");}}6.启动线程和终止线程按钮的Click事件中添加代码:privatevoidbuttonStart_Click(objectsender,EventArgse){sb.Remove(0,sb.Length);timer1.Enabled=true;thread1=newThread(newThreadStart(Method1));thread2=newThread(newThreadStart(Method2));thread1.Start();thread2.Start();}privatevoidbuttonAbort_Click(objectsender,EventArgse){thread1.Abort();thread1.Join(10);thread2.Abort();thread2.Join(10);}7.timer1的Tick事件代码:privatevoidtimer1_Tick(objectsender,EventArgse){if(thread1.IsAlive==true||thread2.IsAlive==true){richTextBox1.Text=sb.ToString();}else{timer1.Enabled=false;}}键编译并执行,单击启动线程后,等一会再单击终止线程,查看运行结果。1.1.3在一个线程中操作另一个线程的控件1.1.3在一个线程中操作另一个线程的控件(续)例.一个线程操作另一个线程的控件的方法(2)添加名称空间引用:usingSystem.Threading;(3)在构造函数上方添加字段声明:Threadthread1;Threadthread2;(4)直接添加代码:delegatevoidAppendStringDelegate(stringstr);privatevoidAppendString(stringstr){if(richTextBox1.InvokeRequired==true){AppendStringDelegated=newAppendStringDelegate(AppendString);this.Invoke