Task 的一些个人见解
Task确实比较好用且优雅 我感觉.NET要成为艺术家...
public class TheTask { /// <summary> /// 直接调用是同步方法 /// </summary> /// <returns></returns> public Task Tasktest() { Task ta = Task.Run(() => { Loading(); }); Console.WriteLine("Task函数完成"); return ta; } /// <summary> /// 直接调用时异步方法 /// </summary> /// <returns></returns> public async Task Taskasync() { await Task.Run(() => { Loading(); }); Console.WriteLine("Task函数完成"); } private void Loading() { Thread.Sleep(1000); Console.WriteLine("耗时操作完成"); } }
static void Main(string[] args) { //Task 测试 //结论 await表示同步 //不加await表示异步 //Over 加了wait表示主动同步 TheTask ta = new TheTask(); ta.Taskasync().Wait(); Console.WriteLine("主函数完成"); Console.Read(); }
效果
另一种
static void Main(string[] args) { TheTask ta = new TheTask(); //ta.Taskasync().Wait(); //主动异步 LoadTest(); Console.WriteLine("主函数完成"); Console.Read(); }
static async void LoadTest() { TheTask ta = new TheTask(); await ta.Tasktest(); }
结果:
如果用Task 还是异步,由主函数决定是否异步好用
也就是
ta.Taskasync().Wait();
加wait表示同步 不加表示异步
就是那个绿色的下划线让我感觉难受
另一种是直接调用表示同步 要重写一个方法才能异步