首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理ValueTask<T> in F#?

如何处理ValueTask<T> in F#?
EN

Stack Overflow用户
提问于 2018-09-18 07:23:24
回答 3查看 1.7K关注 0票数 24

因此,显然.NET的全新ValueTask<T>是更精简的Task<T>版本。这很酷,但是如果以前我必须使用Async.AwaitTask来将我的F#异步工作流与任务集成,那么现在我应该如何处理ValueTask呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-19 05:06:35

在实现Async.AwaitValueTask之前(谢谢亚伦),可以使用ValueTask的AsTask方法,目前可以使用Async.AwaitTask作为最简单的解决方案。

票数 25
EN

Stack Overflow用户

发布于 2021-03-27 02:48:06

我的OSS项目"FusionTasks“可以自然地和隐式地处理TaskValueTask,就像F#异步工作流中的F# Async类型一样:

代码语言:javascript
复制
let asyncTest = async {
  use ms = new MemoryStream()

  // FusionTasks directly interpreted Task class in F# async-workflow block.
  do! ms.WriteAsync(data, 0, data.Length)
  do ms.Position <- 0L

  // FusionTasks directly interpreted Task<T> class in F# async-workflow block.
  let! length = ms.ReadAsync(data2, 0, data2.Length)
  do length |> should equal data2.Length
}
票数 2
EN

Stack Overflow用户

发布于 2022-01-24 23:11:29

使用新的任务表达式,将在这里解释:https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/task-expressions#value-tasks

我刚刚实现了一个System.IAsyncDisposable,它返回如下所示的System.Threading.Tasks.ValueTask

代码语言:javascript
复制
    interface IAsyncDisposable with
        member _.DisposeAsync(): ValueTask = 
            task {
                use _ = client
                return ()
            } |> ValueTask

您可以看到,我只是将任务传递给ValueTask

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52381049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档