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();
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值