异步使用情况与使用方法
目录
异步加载介绍
作用:
初始化数据
加载资源
调用接口
例子: private async void Start()
{
await LoadingData(SceneManager.GetActiveScene().name); // 初始加载第一个页面的数据(即首页)
//WriteData();
}
提示:异步方法必须为可等待(awaitable)的对象,比如后台 I/O,网络请求、文件读写
————————————————
声明其他方法时使用方法
async
告诉编译器“这个方法是异步的”,可以方法内使用 await
Task<bool>
一个“未来会返回 true 或 false 的异步任务”
await
等待异步任务完成,然后拿到结果
案例:
private async Task<bool> zuoshenme( )
{
return true; // 占位返回 异步方法不可空置,必须有返回值
}
private async Task<bool> MyMethod()
{
// 如果有异步操作就 await
await zuoshenme();
// 不想 await 也可以直接返回 true/false
return true;
}
💡 小提示:
-
async + return true → 编译器自动包装成 Task<bool>
-
方法内部可以调用其他异步方法,也可以不 await
Run
单独开辟一条线程
案例
private Task<bool> wdddw()
{
Debug.Log("主线程开始");
// Task.Run 返回 Task<bool>,直接返回给调用方
return Task.Run(() =>
{
return true; // Task<bool> 需要返回 bool
});
// Debug.Log("主线程继续执行"); // 这里不写,因为 return 已经结束方法
}
注意
:async 是异步预告,必须要Task<bool>返回值确认返回结果,Task<bool>作为返回功能本身不和async 绑定,只有有Task相关方法就行,run就是其中之一
公司代码:
读取不同场景的初始数据
public async Task<bool> LoadingData(string sceneName)
{
switch (sceneName)
{
case "Login":
{
return true;
// 读取登录页面的初始数据
//break;
}
case "Management": // 读取管理页面的导航栏数据
{
return await LoadingManagement();
//break;
}
/* case "N15AEngine": // 读取组卷页面的故障点数据
{
return await LoadingN15AEngine();
//break;
}*/
case "ElectricDriveAssembly": {
return await LoadElectricDriveAssembly();
//break;
}
default:
{
return true;
}
}
总结
-
async + await 是公司代码的常规写法
-
每个场景的加载方法都是异步 Task<bool>,便于统一 await 调用
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)