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

时间:2023-03-09 06:40:29
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 * );
url = ws();
if (!string.IsNullOrWhiteSpace(url))
{
logger(string.Format("点播轮训调用时间:{0}秒,发生的时间:{1}秒", i, DateTime.Now));
break;
}
}
return url;
}

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