作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在编写一些在内存中构建缓冲区然后将其清空到 TextWriter
中的代码当缓冲区填满时。大多数时候,角色会直接进入缓冲区(同步)但偶尔(每 4kb 一次)我需要调用 TextWriter.WriteAsync
.
在the System.Threading.Tasks.Extensions
package似乎只有一个 ValueTask<T>
结构,并且没有非泛型 ValueTask
(没有类型参数)。为什么没有ValueTask
,如果我需要转换返回非泛型的方法,我应该怎么做 Task
(即 void
方法的异步等价物)到 ValueTask
?
最佳答案
在黑暗中拍摄,但我认为这是因为 Task.CompletedTask
对于大多数非通用案例来说已经足够了。
一种思考方式ValueTask<T>
作为 Task<T>
的联合和 T
(分别针对异步和同步情况)。因此,一个非通用的 ValueTask
将是 Task
的联合和...没什么,所以只是一个Task
.
我想不出非泛型 ValueTask
的情况与缓存一个已经完成的 Task
实际上是不同的(这就是 Task.CompletedTask
是什么),尽管我很想了解任何内容。
关于c# - 我应该如何将返回非泛型任务的函数转换为 ValueTask?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48935667/
我是一名优秀的程序员,十分优秀!