我正在处理一些在内存中构建缓冲区的代码,然后在缓冲区填满时将其清空为TextWriter
。大多数情况下,角色将直接进入缓冲区(同步)但偶尔(每4kb一次)我需要调用TextWriter.WriteAsync
。
在the System.Threading.Tasks.Extensions
package中,似乎只有ValueTask<T>
结构,没有非通用ValueTask
(没有类型参数)。为什么没有ValueTask
,如果我需要将返回非泛型Task
的方法(即void
方法的异步等效项)转换为{,我该怎么办? {1}}?
答案 0 :(得分:3)
在黑暗中拍摄,但我认为这是因为Task.CompletedTask
足以应对大多数非一般情况。
考虑ValueTask<T>
的一种方法是Task<T>
和T
的联合(分别用于异步和同步情况)。因此,非通用ValueTask
将是Task
和......之间的联合,因此只需Task
。
我无法想到一个非通用ValueTask
与缓存已经完成的Task
(这是Task.CompletedTask
)的实际不同的情况,尽管我很乐意了解任何事情。