我可以在C#中轻松完成这个...但是我需要VB.Net中的等价物。我需要能够在VB.Net中实现各种IAsyncResult属性。
IN C#
像冠军一样......
public object AsyncState { get; set; }
在VB.NET中 - 这次失败
这会失败,因为您无法在VB.Net中重载属性
Public ReadOnly Property AsyncState() As Object Implements IAsyncResult.AsyncState
Get
'... the GET's code goes here ...
End Get
End Property
Public WriteOnly Property AsyncState() As Object
Set(ByVal value As Object)
'... the SET's code goes here ...
End Set
End Property
在VB.NET中 - 这两次失败
这不符合“必须实施IAsyncResult”要求
Public AsyncState As Object
Public AsyncState As Object Implements IAsyncResult.AsyncState
答案 0 :(得分:0)
这就是诀窍......
Public Class AsyncResult
Implements IAsyncResult
#Region "CONSTRUCTORS"
Public Sub New(ByVal callback As AsyncCallback, ByVal context As HttpContext)
_asyncCallback = callback
_httpContext = context
_createdTime = DateTime.Now
End Sub
#End Region
#Region "PROPERTIES"
Public Const TimeoutSeconds As Integer = 3
Private _asyncCallback As AsyncCallback
Private _httpContext As HttpContext
Private _createdTime As DateTime
Public ReadOnly Property TimedOut() As Boolean
Get
Return ((DateTime.Now - _createdTime).TotalSeconds >= TimeoutSeconds)
End Get
End Property
Public Property Response() As Response
Get
Return m_Response
End Get
Set(ByVal value As Response)
m_Response = value
End Set
End Property
Private m_Response As Response
#Region "IAsyncResult Members"
Public ReadOnly Property HttpContext() As HttpContext
Get
Return _httpContext
End Get
End Property
Public ReadOnly Property AsyncState() As Object Implements IAsyncResult.AsyncState
Get
Return m_AsyncState
End Get
'Set(ByVal value As Object)
' m_AsyncState = value
'End Set
End Property
Private m_AsyncState As Object
Private ReadOnly Property IAsyncResult_AsyncWaitHandle() As System.Threading.WaitHandle Implements IAsyncResult.AsyncWaitHandle
Get
Throw New NotImplementedException()
End Get
End Property
Private ReadOnly Property IAsyncResult_CompletedSynchronously() As Boolean Implements IAsyncResult.CompletedSynchronously
Get
Return False
End Get
End Property
Public ReadOnly Property IsCompleted() As Boolean Implements IAsyncResult.IsCompleted
Get
Return m_isCompleted
End Get
'Set(ByVal value As Boolean)
' If Not value Then
' Return
' End If
' Me.m_isCompleted = True
' _asyncCallback(Me)
'End Set
End Property
Private m_isCompleted As Boolean = False
#End Region
#End Region
#Region "METHODS"
Public Function ProcessRequest() As Boolean
' Any "Execution" code goes here...
Return Me.IsCompleted
End Function
#End Region
End Class