【问题标题】:Visual basic 10.0 does not support async methods or lambdasVisual basic 10.0 不支持异步方法或 lambda
【发布时间】:2019-02-13 18:41:27
【问题描述】:

在一个针对 .NET 4.0 的 VB 的新项目 AspNet WebForms 中,我收到了这个错误:

Visual basic 10.0 不支持异步方法或 lambdas

代码是这样的:

<WebMethod>
Public Shared Async Function MethodNameAsync() As Task(Of String)
    Dim res As String = ""

    Try

        Dim succ = False
        Dim taskRes = Await TaskEx.Run(Async Function()
                                           Await TaskEx.Delay(10000)
                                           succ = True
                                           res = "OK"
                                           Return res
                                       End Function).ConfigureAwait(False)
        Return taskRes
    Catch ex As Exception
        res = "ERROR"
        Throw ex
    End Try

    Return res
End Function

【问题讨论】:

  • Async/Await 在 VB 10.0 中不被原生支持,所以我假设你已经安装了 thisthis?我不知道生成此代码的原因,但我怀疑是否存在针对仅是测试功能的修复/解决方法。您可能必须删除该代码(如果可能)或使用更新的 VS 版本。
  • 既然你没提,那我就问一下:你用过VB10/.NET 4.0还是愿意升级到新版本?
  • @VisualVincent im 使用 VS 2017,该项目是一个带有 .NET 4.0 框架的 Web 应用程序 Web 表单。
  • @AhmedAbdelhameed 是的,我必须使用它,我正在使用该框架版本和 VB 进行项目,所以我不知道如何获得异步方法的功能,我已经安装了 microsoft.bcl。异步使用 Task -> TaskEx。
  • 这个项目是在旧版本的 VS 中创建的吗?

标签: vb.net async-await .net-4.0


【解决方案1】:

从 Nuget (Install-Package Microsoft.Bcl) 安装库 Microsoft.Bcl。它为您提供 async/await 支持以及其他一些仅在以后的框架版本中才能找到的东西。

它还允许您使用 Task.Factory.FromAsync 将以前样式的异步方法 (.BeginAsyncMethod -> .EndAsyncMethod) 转换为可等待的任务。

在旧环境中享受新的异步功能!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 2016-09-20
    • 2018-03-10
    • 2015-03-20
    • 2018-11-06
    相关资源
    最近更新 更多