首页 > 其他分享 >unity的异步操作

unity的异步操作

时间:2024-09-02 21:03:10浏览次数:7  
标签:异步 Task string await unity 线程 操作 async

1.C#提供了两个关键字来实现异步async和await

async 关键字用于声明一个异步方法。该方法内部可以使用 await 关键字来等待异步操作的完成。当方法被标记为 async 时,它隐式地表示该方法可能会包含一个或多个 await 表达式。重要的是要注意,async 方法通常会返回一个 Task 或 Task<T> 类型的对象,其中 T 是方法的返回类型。

await 关键字用于等待一个异步操作的完成。它只能在被 async 修饰的方法内部使用。当遇到 await 表达式时,编译器会自动将方法分成两部分:await 表达式之前的代码会在原始线程上同步执行,而 await 表达式之后的代码会在异步操作完成时,在另一个线程(或从线程池中获取的线程)上继续执行。这个过程是自动的,不需要开发者手动管理线程。

例子:

using System;  
using System.IO;  
using System.Threading.Tasks;  
  
class Program  
{  
    static async Task Main(string[] args)  
    {  
        string content = await ReadFileAsync("example.txt");  
        Console.WriteLine(content);  
    }  
  
    static async Task<string> ReadFileAsync(string filePath)  
    {  
        using (StreamReader reader = new StreamReader(filePath))  
        {  
            // 注意:StreamReader 没有直接的异步读取方法,这里为了示例  
            // 我们假设有一个,但在现实中,你可能会使用 File.ReadAllTextAsync 等  
            // 这里使用 Task.Run 来模拟异步操作  
            string content = await Task.Run(() =>  
            {  
                return reader.ReadToEnd();  
            });  
            return content;  
        }  
    }  
}  
  
// 注意:上面的 ReadFileAsync 方法中使用了 Task.Run 来模拟异步操作,  
// 但在实际应用中,读取文件应该使用 File.ReadAllTextAsync 或类似的异步API。

2.UniTask

Task的升级版本(第三方弄出来代替Task和协程的方案),0GC的真异步解决方案。

例子:

public async UniTask AsyncSetImage(string address)
{
    ZCancelSource.Return(ref cancelSource_);
    cancelSource_ = ZCancelSource.Rent();
    try
    {
        Sprite spr = await ZResLoader.Instance.LoadAssetAsync<Sprite>(address, cancelSource_.CreateToken(), 1000);
        this.sprite = spr;

        ZCancelSource.Return(ref cancelSource_);
    }
}

 

标签:异步,Task,string,await,unity,线程,操作,async
From: https://www.cnblogs.com/mcyushao/p/18393535

相关文章

  • Unity实战案例 2D小游戏HappyGlass(模拟水珠)
    本案例素材和教程都来自Siki学院,十分感谢教程中的老师本文仅作学习笔记分享交流,不作任何商业用途预制体  在这个小案例中,水可以做成圆形但是带碰撞体,碰撞体比图形小一圈,顺便加上Trailrenderer组件 材质将碰撞材质的friction为0,bonciness可以按照需要修改脚本 ......
  • DBA福利:云原生分布式数据库 PolarDB-X 操作指南
    DBA福利:云原生分布式数据库PolarDB-X操作指南前言准备工作在Windows上准备测试环境环境操作说明安装PXD使用PXD一键安装PolarDB-X方式一方式二操作说明体验PolarDB-X源码编译安装PolarDB-X编译PolarDB-XDN体验感受前言作为开发者,数据库可以说与开发者息息相关,一个系统是否......
  • 【C语言】文件操作(详解)
    文章目录1.为什么需要文件?2.什么是文件?2.1文件分类2.2文件名3.文件的使用3.1文件指针3.2打开和关闭文件3.2.1文件使用方式3.2.2标准输入输出流3.3文件输入输出函数3.3.1字符输入输出实现文件拷贝3.3.2文本行输入输出3.3.3格式化输入输出3.3.4二进制输入输出3.3.5sscanf/sprintf函......
  • Hive(二)DML数据操作语言
    DML数据操作一、数据导入1、向表中装载数据hive>loaddata[local]inpath'路径'[overwrite]intotable表名[partition(partcol1=val1,…)];(1)loaddata:表示加载数据(2)local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表(3)inpath:表示加载数据的路径(4)overw......
  • Vmware 上安装部署免费开源NAS系统FreeNAS11.3操作系统(支持CIFS (samba), FTP, NFS,
    说明FreeNAS®于2005年首次跃上互联网,在过去的十年里,它已成为一个家喻户晓的名字,在全球拥有超过1000万次下载和100万次部署。FreeNAS是一套免费的NAS(网络附加存储)服务器解决方案,它基于FreeBSD和Python开发,能够将一台普通的PC转变为功能强大的网络存储服务器。概述类型:NA......
  • Unity3d 截屏保存到相册,并且刷新相册
    要做一个截图的功能,并且玩家可以在相册中看到。 做的时候遇到了三个问题: 1、unity自带的截图API,Application.CaptureScreenshot在Android上不生效 2、图片保存的路径获取 3、保存的图片可以在手机的文件管理中找到,但是相册中没有。 解决......
  • 关于Window操作系统中对Oracle的性能监控
    目的本文是为了测试数据仓库的实时数据抽取功能对源数据库和操作系统的性能的影响。由于Windows操作系统未提供类似于UNIX下的Top、ps、vmstat等CPU、内存、I/O监控工具,同时Oracle作为操作系统下的一个唯一进程而存在,这就导致windows操作系统在监控Oracle方......
  • 像操作tar文件一样操作jar文件,让很多事情变得简单
    原创1024夜谭jar文件即Java归档文件,也称为jar包,是Java应用软件或库,通常聚合了大量的Java类文件、相关的元数据和资源文件。通常由构建工具产生,可以使用IDE、反编译工具或者Java诊断工具如Arthas等查看内容。如果你对tar命令使用得心应手,那么你将发现jar操作与tar操作有许多......
  • Unity工具篇 专栏目录
    一.专栏介绍本专栏是针对Unity引擎在做游戏或者VR的过程中,需要接入的一些SDK或者插件或者辅助相关功能。今后持续更新中,如有疑问可留言,8小时内回复。二.专栏目录Unity之Xlua如何接入protobufUnity之C#端使用protobufUnity之protobuf-lua的使用Unity之Protobuf-ne......
  • 如何高效操作DOM ?
    1.为什么说DOM操作耗时1.1线程切换浏览器为了避免两个引擎同时修改页面而造成渲染结果不一致的情况,增加了另外一个机制,这两个引擎具有互斥性,也就是说在某个时刻只有一个引擎在运行,另一个引擎会被阻塞。操作系统在进行线程切换的时候需要保存上一个线程执行时的状态信息并......