一、Async 和 Await 的用法详解
https://www.cnblogs.com/ma8023/p/11677394.html
想象一下当我们在处理UI和按钮单击时,我们需要运行一个长时间运行的方法,比如读取一个大文件或其他需要很长时间的任务,在这种情况下,整个应用程序必须等待这个长时间运行的任务完成才算完成整个任务。
换句话说,如果同步应用程序中的任何进程被阻塞,则整个应用程序将被阻塞,我们的应用程序将停止响应,直到整个任务完成。
在这种情况下,异步编程将非常有用。通过使用异步编程,应用程序可以继续进行不依赖于整个任务完成的其他工作。
在Async 和 await关键字的帮助下,使得异步编程变得很简单,而且我们将获得传统异步编程的所有好处。
.NET Framework4.5中有一些支持API,Windows运行时包含支持异步编程的方法。
在Async 和 await关键字的帮助下,我们可以在实时项目中使用所有这些,以便更快地执行任务。
包含异步方法的API有HttpClient, SyndicationClient, StorageFile, StreamWriter, StreamReader, XmlReader, MediaCapture, BitmapEncoder, BitmapDecoder 等。
在本例中,我们将异步读取大型文本文件中的所有字符,并获取所有字符的总长度。
二、 unity中的StartCoroutine协同函数
http://blog.sina.com.cn/s/blog_aaa4ce8d010131kr.html
https://www.cnblogs.com/fly-100/p/3910515.html
StartCoroutine
yield return null; //暂停协同程序,下一帧再继续往下执行
yield new WaitForFixedUpdate (); //暂停协同程序,等到下一次调用FixedUpdate方法时再继续往下执行
yield return new WaitForSeconds(2);//暂停协同程序,2秒之后再继续往下执行
yield return StartCoroutine("SomeCortoutineMethod");//暂停此协同程序,开启SomeCortoutineMethod协同程序,直到SomeCortoutineMethod执行完再继续往下执行