C# Thread.Join()用法的理解

发布时间:2017-1-16 18:47:29 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"C# Thread.Join()用法的理解",主要涉及到C# Thread.Join()用法的理解方面的内容,对于C# Thread.Join()用法的理解感兴趣的同学可以参考一下。

Thread.Join()的好处主要体现在对顺序流的控制,当一个操作流涉及到很多步骤并且要求严格的先后顺序,这个时候Thread.Join()起到了用场。     首先,简单的介绍Thread.Join()的定义:指在一线程里面调用另一线程join方法时,表示将本线程阻塞直至另一线程终止时再执行.这里对于定义不做过多的解释,直接看在具体项目中的使用。     简单的说一下我在项目使用的场景:后台系统有一个在线生成exe的功能,exe需要一些固定的js、css等文件,所以第一步是对文件进行复制,然后进行md5的计算生成下载xml文件供客户端下载,最后压缩所有的文件。 这个功能的实现我们使用了Thread.Join()。   ///         /// 生成exe第一个线程,主要用来复制必要的文件         ///         ///         public void CopyFiles(object quePlanId)         {             RecordLog.writeFile(LogTypeEnum.Xml, "线程生成exe,第一步生成exe模板以及必要文件开始:--'" + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + "'");             DateTime begin = DateTime.Now;            //......................................................................具体实现方法                        }         ///         /// 计算md5值得线程,在这里使用线程调用CopyFiles()方法,在复制文件结束之后才可以执行本方法         ///         ///         public void StartWork(object quePlanId)         {             //复制必要文件             //启动线程使用带参数的委托             System.Threading.Thread copyFiles = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(CopyFiles));             copyFiles.Name = "复制文件";             copyFiles.Start(quePlanId);             copyFiles.Join();             RecordLog.writeFile(LogTypeEnum.Xml, "复制文件线程结束--'" + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + "'");             RecordLog.writeFile(LogTypeEnum.Xml, "开始执行计算md5值线程--'" + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + "'");             DateTime begin = DateTime.Now;             RecordLog.writeFile(LogTypeEnum.Xml, "生成exe第三步计算所有下载文件的MD5值开始:--'" + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + "'"); //。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。                    }         public ActionResult ThreadGenerate()         {            ////启动线程使用带参数的委托             System.Threading.Thread x = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(StartWork));             x.Name = "StartWork";             x.Start(339);             return View();         }

上一篇:Hibernate 配置文件precision与scale的说法
下一篇:easyUi combotree 实现动态加载树节点

相关文章

相关评论