我想将一个现有的 Forms 项目引入 VS2012 RC,并在一些长过程中添加一些快速的 Async/Await 包装器。我想在Async
不更改原始程序的情况下将现有程序包装在等效程序中。
到目前为止,我已经取得了这样的成功:
'old synchronous function:
Public Function UpdateEverything() As Boolean
'Do lots of predictable updates
...
Return True
End Function
'new asynchronous wrapper:
Public Async Function UpdateEverythingAsync() As Task(Of Boolean)
Return Await Task.Run(AddressOf Me.UpdateEverything)
End Function
但这仅有效,因为UpdateEverything
没有参数。如果原始函数有任何参数,我无法计算出语法。例如,如果我有:
'old synchronous function:
Public Function UpdateSomething(somethingID As Integer) As Boolean
'Do updates
...
Return True
End Function
我以为会是:
Public Async Function UpdateSomethingAsync(somethingID As Integer) As Task(Of Boolean)
Return Await Task.Run(Of Boolean)(New Func(Of Integer, Boolean)(AddressOf Me.UpdateSomething))
End Function
但显然不是那么简单。有没有一种简单的方法可以在不重构原始文件的情况下将其包装在 Async 等效项中?