这个是.NET 4.5的特性,所以最低要求.NET版本为4.5及以上。
Thread多线程异步编程例子
public class Program
{
static void Main(string[] args)
{
Console.WriteLine("主线程测试开始..");
Thread thread = new Thread(ThMethod);
thread.Start();
Thread.Sleep(1000);
Console.WriteLine("主线程测试结束..");
Console.ReadLine();
}
static void ThMethod()
{
Console.WriteLine("异步执行开始");
for (int i = 0; i < 5; i++)
{
Console.WriteLine("异步执行" + i.ToString() + "..");
Thread.Sleep(1000);
}
Console.WriteLine("异步执行完成");
}
}
运行效果
使用Async与Await进行异步编程
public class Program
{
static void Main(string[] args)
{
Console.WriteLine("主线程测试开始..");
AsyncMethod();
Thread.Sleep(1000);
Console.WriteLine("主线程测试结束..");
Console.ReadLine();
}
static async void AsyncMethod()
{
Console.WriteLine("开始异步代码");
var result = await MyMethod();
Console.WriteLine("异步代码执行完毕");
}
static async Task<int> MyMethod()
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine("异步执行" + i.ToString() + "..");
await Task.Delay(1000); //模拟耗时操作
}
return 0;
}
}
运行效果
显而易见我们就跟写同步方法一样,完成了异步方法的编写,代码更清晰了。
只有拥有async才能在其内部使用await关键字。异步方法可以具有Task、Task<>或void的返回类型;
await关键字则是用于返回值是“可等待”类型(awaitable)的方法