我应该如何将返回非通用任务的函数转换为 ValueTask?

2024-03-19

我正在编写一些代码,它在内存中构建一个缓冲区,然后将其清空到TextWriter当缓冲区填满时。大多数时候,角色会直接进入缓冲区(同步),但偶尔(每 4kb 一次)我需要调用TextWriter.WriteAsync.

In the System.Threading.Tasks.Extensions package https://www.nuget.org/packages/System.Threading.Tasks.Extensions似乎只有一个ValueTask<T> https://learn.microsoft.com/en-gb/dotnet/api/system.threading.tasks.valuetask-1?view=netcore-2.0结构体,并且没有非泛型ValueTask(没有类型参数)。为什么没有ValueTask,如果我需要转换返回非泛型的方法,我该怎么办Task(也就是说,异步等价于void方法)到ValueTask?


在黑暗中拍摄,但我认为这是因为Task.CompletedTask https://msdn.microsoft.com/en-us/library/system.threading.tasks.task.completedtask(v=vs.110).aspx对于大多数非通用情况就足够了。

一种思考方式ValueTask<T>是作为一个联盟Task<T> and T(分别针对异步和同步情况)。因此,非通用ValueTask将是一个联盟Task而且...什么都没有,所以只是一个Task.

我想不出非通用的情况ValueTask实际上与缓存已经完成的内容不同Task(这是什么Task.CompletedTask是),尽管我很想了解任何内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该如何将返回非通用任务的函数转换为 ValueTask? 的相关文章

随机推荐

  • LINQ:返回列表中的非重复项

    如果我有一个这样的列表 List
  • 如何以编程方式确定 ActiveX 控件是否已安装,以及该控件或整个 ActiveX 是否已被禁用?

    我在服务器端使用 ASP NET 在客户端使用 JavaScript 我正在尝试开发一些页面来帮助用户排除故障 我想知道是否有一种方法可以以编程方式确定以下内容 如果 Internet Explorer 中已禁用 ActiveX 如果已安装
  • 我可以在 View 中使用 WebView(原生反应)吗?

    我正在尝试在 View 组件内使用 WebView 组件 用于我正在开发的 React Native 应用程序 当我将 WebView 嵌入到 View 中时 我看不到 WebView 中显示的内容 这是本机反应的预期行为吗 您应该为您的网
  • 设计库 - CoordinatorLayout/CollapsingToolbarLayout 与 GridView/listView

    这可能是一个愚蠢的问题 但我不太了解设计库 我正在关注这个参考 https github com chrisbanes cheesesquare blob master app src main res layout activity de
  • 在其他类中使用相同的按钮

    我正在使用 Eclipse 并正在编写我的第一个应用程序 但我有一个初学者问题 我想使用主类中按钮中的一些方法 但我想在我的 Start 类中使用它们 我该如何设置向上 是否通过使用 Button1 Button find View By
  • 如何将下拉菜单保留在 ActiveX 之上

    我在所有页面上都有一个由 JavaScript 创建的下拉菜单 并且某些列最多包含 20 个项目 在 Mozilla 浏览器中 此下拉列表显示在所有内容的最上面 但在 Internet Explorer 中 当 ActiveX 对象显示在其
  • 如何在不打开数据库的情况下测试SqlServer连接

    标题基本概括了所有内容 我想创建一个 SqlConnection 然后在不打开数据库的情况下检查该连接 因为那时我还不知道将连接到哪里 可以这样做吗 SqlConnection 类有一个 Open 成员 它尝试打开您在 Database 属
  • 在Android中,如何获取滚动窗格

    我想知道是否有一个小部件的作用类似于 Swing 中的 ScrollPane 实际上 我正在尝试制作一个布局 其中顶部的标题栏始终可见 在其下方有一个可变高度组件 我可以垂直滚动 同时保持标题栏可见 我确信这很容易 但我没有看到它 谢谢 维
  • Google 新闻 XML API:使用国家/地区/语言参数

    我想订阅来自 Google 新闻的 RSS XML 提要 该提要捕获以下查询 来自任何国家 用德语撰写的提及 studie 德语 学习 的文章 我在用着https news google com rss search https news
  • 无法使用角度从登录页面隐藏页眉和页脚

    这是我的问题 我无法从登录页面隐藏页眉和页脚 在这里 我在 app html 以及登录页面和主页中有一个通用的页眉和页脚 如果没有登录 它不必显示导航 但我仍然在身份验证之前获取导航 下面是我的代码
  • 如何编写库而不强迫用户使用库的 IOC 容器

    简短的问题是 给定一个图书馆warrants当应用程序使用该库时 在给定应用程序的情况下 将特定的 IOC 容器用于其内部warrants使用 IOC 容器来连接其依赖项 如果两个容器不同 它们如何才能很好地协同工作 场景是 应用程序定义了
  • 以编程方式安装证书吊销列表 (CRL)

    我需要每周下载并安装大约 50 个 CRL 并将它们安装在多台 Windows 服务器上 下载是最简单的部分 有没有办法编写 CRL 导入过程的脚本 这是我的最终来源 为公众稍微删除 但应该有效 我不会更改已接受的答案 但我确实希望这会有所
  • 为什么在适用时不隐含 constexpr? [复制]

    这个问题在这里已经有答案了 这些可能应该在不同的问题中 但它们是相关的 所以 为什么我们需要写constexpr根本吗 给定一组限制 编译器无法评估代码以查看它是否满足constexpr要求 并将其视为constexpr如果有的话 作为一个
  • Django REST Serializer 对多个嵌套关系进行 N+1 数据库调用,3 层

    我的模型有外键关系的情况 models py class Child models Model parent models ForeignKey Parent class Parent models Model pass 和我的序列化器 c
  • 使用 openXML 与 c# 和 ASP.net 在 powerpoint 中创建动态表

    我已经使用了这些链接并获得了一个工作代码 我可以在其中使用模板报告 包含占位符 并使用从数据库获取的数据生成新的 PPTX 报告 我还有 4 个占位符 需要在其中填充 4 个不同的数据表 目前 我正在使用该模板创建新幻灯片并替换文本的占位符
  • 启用DNS预解析和TCP预连接

    如何在 Chrome 浏览器 Mac OS X 中启用 DNS 预解析和 TCP 预连接 当chrome dns页面显示 DNS 预解析和 TCP 预连接已禁用 它位于高级设置中 称为 预测网络操作以提高页面加载性能
  • PostBackUrl 与 Response.Redirect

    PostBackUrl Response Redirect 和 Server Transfer 之间有什么区别 在什么情况下我们需要遵循什么方法 PostbackUrl 更改表单的action属性 因此初始页面不会更改 但是当用户发布表单时
  • 计算浮点数中“.”后面的位数?

    这是一个面试问题 后面的位数怎么计算 以浮点数表示 例如如果给定 3 554 输出 3 43 000 输出 0 我的代码片段在这里 double no 3 44 int count 0 while no int no count no no
  • Postgresql 适配器 (pg):无法连接到服务器

    我每次运行 Rails 应用程序时都会收到此错误 它无法连接到我的本地 Postgresql Users leonardo rvm gems ruby 1 9 3 p362 gems activerecord 3 2 11 lib acti
  • 我应该如何将返回非通用任务的函数转换为 ValueTask?

    我正在编写一些代码 它在内存中构建一个缓冲区 然后将其清空到TextWriter当缓冲区填满时 大多数时候 角色会直接进入缓冲区 同步 但偶尔 每 4kb 一次 我需要调用TextWriter WriteAsync In the Syste