且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

C#~异步编程在项目中的使用

更新时间:2022-08-30 10:51:12

一些闲话

对异步编程没有了解的同学可以看我的这篇文章<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;
        }

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

本文转自博客园张占岭(仓储大叔)的博客,原文链接:C#~异步编程在项目中的使用,如需转载请自行联系原博主。