代码之家  ›  专栏  ›  技术社区  ›  knocte

如何处理F#中的ValueTask<T>?

  •  3
  • knocte  · 技术社区  · 6 年前

    显然.NET是全新的 ValueTask<T> 瘦肉精 的版本 Task<T> . 那很酷,但是如果在我使用之前 Async.AwaitTask

    1 回复  |  直到 6 年前
        1
  •  17
  •   knocte    6 年前

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

        2
  •  0
  •   Kouji Matsui    3 年前

    "FusionTasks" 可以自然地处理并隐式地解释两者 Task ValueTask 与F相同# Async 键入F#异步工作流:

    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
    }