在进行功能的编写中发现,在原来同事写的大部分功能中动使用了
public async Task test(){ await ***(); }
类似的异步操作,在师傅的解答下稍微了解到功能的使用
若使用 async Task<T> 标明为异步操作, 再次过程中, 若是调用其他方法, 若不使用await, 将会创建分支线程, 来执行此方法, 不影响主线程的进行;
但是若此方法会影响到接下来的操作, 就需要添加await来保证此方法执行完, 再依次进行接下来的操作, (同方法中不添加 async Task<T> 的非异步操作)
倘若所有方法均互不影响,则需要删除async,增加返回 return Task.CompletedTask;已就是当有一个方法执行完后,主线程结束
因此,当我们在一个方法中要调用多个方法,在此过程的部分方法的执行对于接下来的的其他方法及结果没有影响,则可以考虑使用异步操作,
public Task Test(string a,string b) { Test1(a); // Test1()为非异步方法 Test2(b); // Test2()为非异步方法
return Task.CompletedTask; } // Test1()未执行完便开始执行Test2(),当有一个方法执行完时,主线程结束
public async Task Test(string a,string b) { await Test1(a); // Test1()为异步方法 Test2(b); // Test2()为非异步方法 } // Test1()执行完后再执行Test2(),Test2()被调用,主线程便结束,无需等待Test2()完成
public async Task Test(string a,string b) { Test1(a); // Test1()为非异步方法 await Test2(b); // Test2()为异步方法 } // Test1()被调用后便执行Test2(),Test2()执行完,主线程结束