学习一般都是由浅入深。这篇文章介绍如何使用async和awiat关键字实现简单的异步编程。
通常情况下,我们编写程序都是自上而下一步一步的执行,而异步编程的核心就是打破这个常规,让耗时的操作另开一个线程执行,让主线程继续执行。是不是很熟悉,其实异步的背后就是多线程,只是简化了编程,让创建和销毁线程的操作交给后台代码,把线程交给线程池管理了。
下面通过一个简单的Demo来展示基础的异步编程。
using System;
using System.Threading;
using System.Threading.Tasks;
namespace AsyncTest
{
class Program
{
//测试异步编程
static void Main(string[] args)
{
//启动异步操作
AsyncMethod();
//主线程继续执行
for(int i = 0; i < 100; i++)
{
Thread.Sleep(1000);
Console.WriteLine("This is main thread...");
}
Console.ReadKey(false);
}
static async void AsyncMethod()
{
Console.WriteLine("Task thread start...");
int result = await AsyncTest();
Console.WriteLine("Task thread end...Result is " + result);
}
/// <summary>
/// 返回Int类型
/// </summary>
/// <returns></returns>
static async Task<int> AsyncTest()
{
int i = 0;
for(int j = 0; j < 5; j++)
{
i++;
await Task.Delay(1000); //模拟耗时操作,也可以用await Task.Run(() => Thread.Sleep(1000));
}
return i;
}
}
}
文章评论