zoukankan      html  css  js  c++  java
  • C#~异步编程在项目中的使用

    一些闲话

    对异步编程没有了解的同学可以看我的这篇文章<C#~异步编程>,今天主要说一下,在项目中怎么就用到了异步编程!在进行WEB开发时,异步这块我们用的并不多,但当你的项目做到一定规模时,它可以与其它站点(API),其它设置(手机,平板)之间的通讯就多了起来,这时,为了提高UI(浏览器,手机终端,平板终端,winform终端)的响应能力,我们就需要引入异步了.

    项目用到了它

    我们这个项目是个直播功能的项目,直播的内容存储在第三方,它们为我们提供了相关的接口,web服务的(soap的,目前比较流行RestFul的),当我们老师端完成了直播后,需要关闭它,然后第三方会通知我们,我们接到通过后,将课程的状态改为"完成"就可以了,在这里,我们需要用到了录课功能,录课是第三方在老师结束直播后才进行的工作,所以,当第三方通知我们完成后, 这时,录课的视频还没有写在第三方服务器上,所以,我们必须要让程序sleep一下,再进行获取工作,这种情况,就用到了异步和线程的知识了.

    项目中的代码

    我自己封装了一个根据时间段去调用WEB服务的方法,下面是代码

            /// <summary>
            /// 线程轮训服务
            /// </summary>
            /// <param name="ws">要轮训的代码块</param>
            /// <param name="interval">间隔的秒数</param>
            /// <returns></returns>
            private string ThreadPoolService(Func<string> ws, Action<string> logger, params int[] interval)
            {
                string url = ws();
                foreach (int i in interval)
                {
                    Thread.Sleep(i * 1000);
                    url = ws();
                    if (!string.IsNullOrWhiteSpace(url))
                    {
                        logger(string.Format("点播轮训调用时间:{0}秒,发生的时间:{1}秒", i, DateTime.Now));
                        break;
                    }
                }
                return url;
            }

    而剩下的工作就是调用它了,这块内容就与具体项目有关了,在这里就不公开出来了,哈哈.

  • 相关阅读:
    012.Nginx负载均衡
    011.Nginx防盗链
    010.Nginx正反代理
    009.Nginx缓存配置
    附007.Docker全系列大总结
    附024.Kubernetes全系列大总结
    008.Nginx静态资源
    007.Nginx虚拟主机
    006.Nginx访问控制
    005.Nginx配置下载站点
  • 原文地址:https://www.cnblogs.com/lori/p/3867662.html
Copyright © 2011-2022 走看看