VB.NET IASYNCRESULT.ASYNCSTATEの実装
-
01-10-2019 - |
質問
C#で簡単にこれを行うことができます...しかし、VB.NETでは同等のものが必要です。 vb.netにさまざまなiasyncresultプロパティを実装できる必要があります。
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
解決
これはトリックをしました...
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
所属していません StackOverflow