C#~异步编程_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > C#~异步编程

C#~异步编程

 2014/6/16 16:09:00  张占岭  程序员俱乐部  我要评论(0)
  • 摘要:.netframeworks5.0主推的就是异步编程APM,它事实上不是新的东西,而是微软将之前的线程等概念的进行的一次封装,提出了await,async等关键字,引用了Task类,也大大简化了APM的开发,下面我们将通过一个具体的例子来介绍一下APM的使用场合。实例说明有一个面向WEB的API接口,在我们项目中需要用到,这个API主要功能是向其它项目发通知,如一个用户点了回复帖子,可能伴随着一个通知的产生,而这个通知可能是PHP端需要体现的,这样,这种跨网络,跨平台的接口API就出现了
  • 标签:C# 编程 异步

.net frameworks5.0主推的就是异步编程APM,它事实上不是新的东西,而是微软将之前的线程等概念的进行的一次封装,提出了await,async等关键字,引用了Task类,也大大简化了APM的开发,下面我们将通过一个具体的例子来介绍一下APM的使用场合。

实例说明

有一个面向WEB的API接口,在我们项目中需要用到,这个API主要功能是向其它项目发通知,如一个用户点了回复帖子,可能伴随着一个通知的产生,而这个通知可能是PHP端需要体现的,这样,这种跨网络,跨平台的接口API就出现了,而在进行通讯过程中,网络是不可控的,它的响应速度是不可预知的,所以,这种通知功能,应该使用我们的异步编程来实现(APM,不是XMLHTTPRequest)。

知识点

class="sentence" data-guid="6cd4d86812a1196f119766e98a53e29d" data-source="An async method provides a convenient way to do potentially long-running work without blocking the caller's thread."> 异步方法:提供了一种简便方式完成可能需要长时间运行的工作,而不必阻止调用方的线程。 can resume its work without waiting for the async method to finish.">异步方法的调用方可以继续工作,而不必等待异步方法完成。

await:运算符应用于一个异步方法的任务挂起方法的执行,直到等待任务完成。 任务表示正在进行的工作。expression does not block the thread on which it is executing."> await 表达式不阻止它在其上执行的线程

async: async 修饰符指示方法、它进行修改 lambda 表达式或 匿名方法 是异步的

Task类:它表示一个任务,在.net4.5版本开始被支持, 它隶属于 System.Threading.Tasks命名空间下;通过Task类可以方便的开启一个新的线程。

代码展现

异步代码:

      /// <summary>
        /// 异步方法,解决长等待问题
        /// </summary>
        /// <param name="action"></param>
        /// <param name="entity"></param>
        /// <returns></returns>
        public async Task<VMessage> AsyncAdd(Func<FAQ_Info, VMessage> fun, FAQ_Info entity)
        {
            return await System.Threading.Tasks.Task.Run(() =>
            {
                return fun(entity);
            });
        }

调用代码:

       var repository = new NoticeInfoService();
       repository.AsyncAdd((a) => { return repository.TeacherReplyFAQ(a); }, faqInfo);

使用技巧:使用了Func委托,来统一某种类型的实现,它减少了重复代码量。

上一篇: JNI调用第三方C++ dll 下一篇: 硬币分类
发表评论
用户名: 匿名