异步编程(2)
上一章我们用的方法中用了 Task.Delay(1); 这个 Delay 是异步延迟,如果我们不需要用延迟,仅仅是使用异步,我们可以直接使用 Task.Run 用方法名作为参数进行异步。
核心代码
Task.Run(方法名);
也可以用 Lambda 的方式,可以用参数接收返回值。
Task.Factory.StartNew(() => 方法名(), TaskCreationOptions.LongRunning);
完整代码
using System;
using System.Threading;
using System.Threading.Tasks;
namespace StudyRecordProject
{
class Program
{
static async Task Main(string[] args)
{
//统计 1 类
Console.WriteLine("开始统计 1 类");
var num1 = Task.Factory.StartNew(() => Statistics01(), TaskCreationOptions.LongRunning);
//统计 2 类
Console.WriteLine("开始统计 2 类");
var num2 = Task.Run(Statistics02);
//统计 3 类
Console.WriteLine("开始统计 3 类");
var num3 = Task.Run(Statistics03);
var we = await num1 + await num2 + await num3;
Console.WriteLine("结束统计");
}
/// <summary>
/// 统计 1
/// </summary>
/// <returns></returns>
static int Statistics01()
{
//等待 20 秒
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
Thread.Sleep(1000);
}
Console.WriteLine("我是统计 1 类,用时 10 秒");
return 10;
}
/// <summary>
/// 统计 2
/// </summary>
/// <returns></returns>
static int Statistics02()
{
for (int i = 0; i < 20; i++)
{
Thread.Sleep(1000);
}
Console.WriteLine("我是统计 2 类,用时 20 秒");
return 20;
}
/// <summary>
/// 统计 3
/// </summary>
/// <returns></returns>
static int Statistics03()
{
for (int i = 0; i < 30; i++)
{
Thread.Sleep(1000);
}
Console.WriteLine("我是统计 3 类,用时 30 秒");
return 30;
}
}
}
欢迎进qq群交流:704028989