using System;
using System.Collections.Generic;
using System.Diagnostics.Eventing.Reader;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Sci
{
//输出顺序
//Test()
//Func3()-start
//Func2()-start
//Func1()-start
//Func1()-end
//Func2()-end
//Func3()-end
//await result 输出顺序
//Test()
//Func3()-start
//Func2()-start
//Func2()-end
//Func3()-end
//Func3()-return
//Func1()-start
//Func1()-end
public class AsyncTest
{
/// <summary>
/// 异步方法示例
/// </summary>
public static async void Test()
{
Console.WriteLine("Test()");
var result = Func3();
Func2();
//string data = await result; // 等待直到Func3()返回了结果,继续执行
//Console.WriteLine("" + data);
Func1();
}
private static async void Func1()
{
Console.WriteLine("Func1()-start");
await Task.Delay(TimeSpan.FromSeconds(1));
Console.WriteLine("Func1()-end");
}
private static async void Func2()
{
Console.WriteLine("Func2()-start");
await Task.Delay(TimeSpan.FromSeconds(2));
Console.WriteLine("Func2()-end");
}
private static async Task<string> Func3()
{
Console.WriteLine("Func3()-start");
await Task.Delay(TimeSpan.FromSeconds(3)); // 1、await等待逻辑 未执行完成时,先跳过当前函数继续向下执行Func2(); 2、await等待逻辑 执行完成时,继续向下执行Func3()-end;
Console.WriteLine("Func3()-end");
return "Func3()-return";
}
/// <summary>
/// 自定义异步执行的函数
/// </summary>
public async void functionSci()
{
await Task.Run(() =>
{
try
{
// 在此添加耗时较长的功能
// ....
}
catch { }
});
}
}
}