我正在编写一些代码,它在内存中构建一个缓冲区,然后将其清空到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(使用前将#替换为@)