asp.net - New PageAsyncTask 的重载解析失败

标签 asp.net vb.net asynchronous webforms .net-4.5

我正在尝试在 ASP.NET 4.5 Web 窗体中执行一些异步操作。我在遵循几个在线教程时收到此错误:

Overload resolution failed because no accessible 'New' can be called with these arguments:

'Public Sub New(handler As System.Func(Of System.Threading.CancellationToken, System.Threading.Tasks.Task))': Value of type 'System.Threading.Tasks.Task' cannot be converted to 'System.Func(Of System.Threading.CancellationToken, System.Threading.Tasks.Task)'.

'Public Sub New(handler As System.Func(Of System.Threading.Tasks.Task))': Value of type 'System.Threading.Tasks.Task' cannot be converted to 'System.Func(Of System.Threading.Tasks.Task)'.

这是代码(类似于 this tutorial ):

Imports System.Threading.Tasks

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     RegisterAsyncTask(New PageAsyncTask(DoStuffAsync))
     ' etc...
End Sub

Private Async Function DoStuffAsync() As Task
    Await SomeTask()
End Function

这是解决方案中唯一的错误。据我所知,这正是教程中的内容(从 C# 翻译而来)。我确实在 MSDN 文档中注意到 PageAsyncTask 对事件处理程序使用了几个附加参数(这需要附加代码),但我在线阅读的所有教程都避开了这些参数,只输入了函数名称(Func(任务))。我错过了什么?

This是一个示例,其中该人仅使用方法名称(并传递方法的参数)。

最佳答案

在 C# 中,您可以仅使用方法名称来传递函数委托(delegate)作为参数。在 VB.NET 中,您需要使用 AddressOf 运算符来传递委托(delegate)。例如

RegisterAsyncTask(New PageAsyncTask(AddressOf DoStuffAsync))

关于asp.net - New PageAsyncTask 的重载解析失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27573832/

相关文章:

ASP.NET C# - 使用用户控件的下拉列表

c# - 使用操作过滤器限制每个用户访问操作的次数

mysql - 添加到数据库时出现问题

java - 在文件仍被访问时将其移动到不同位置

ios - Swift 异步方法和返回/完成 block

c# - 可以为抽象类的子类创建静态构造函数吗?

c# - 在具有大量流量的异步 ASP.NET Web API 中,将 ConfigureAwait 设置为 false 会产生什么影响?

c# - 请求 'System.Web.AspNetHostingPermission"类型的权限

c# - 在 Asp.net 中缓存(slidingExpiration 和 absoluteExpiration)

vb.net - Meitrack设备返回什么来确认服务器收到的数据