【发布时间】:2019-04-06 02:52:33
【问题描述】:
我需要这个函数来运行异步,但似乎无法找到方法。
LIST1 是公共的,包含一个包含数百个条目的 List(of String)。清单声明:
Public LIST1 As New List(Of String)
通常,我会运行以下代码来检索他的列表是否包含条目的布尔值:
Dim result = LIST1.Any(Function(s) value.ToLower.Contains(s))
完整的非异步功能:
Function CheckValue(byval value As String) As Boolean
Dim result As Boolean = LIST1.Any(Function(s) value.ToLower.Contains(s))
Return result
End Function
效果符合预期。
如何实现与异步函数相同的功能?我试过了:
Async Function CheckValue(byval value as String) As Task(Of Boolean)
Dim result as Task(Of Boolean) = Await LIST1.Any(Function(s) value.ToLower.Contains(s))
Return result
End Function
我收到以下错误:“等待”要求“布尔”类型具有合适的 GetAwaiter 方法。
有什么想法吗?
【问题讨论】:
-
Any()不是异步的。你不能让它异步。为它创建一个异步包装器也没有意义,因为它不是 IO 绑定的。 -
考虑消除多余的字符串分配。而不是
value.ToLower.Contains(s)(ToLower创建一个新字符串),使用value.IndexOf(s, StringComparison.CurrentCultureIgnoreCase) > 0。
标签: vb.net asynchronous async-await