代码之家  ›  专栏  ›  技术社区  ›  Prisoner ZERO

vb.net版实施IAsyncResult.AsyncState

  •  0
  • Prisoner ZERO  · 技术社区  · 15 年前

    我可以很容易地用C#来做这件事,但我需要用C#来做VB.Net版. 我需要能够在中实现各种IAsyncResult属性VB.Net版.

    在C中#

    public object AsyncState { get; set; }
    

    在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版-这两个都失败了

    Public AsyncState As Object
    Public AsyncState As Object Implements IAsyncResult.AsyncState
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Prisoner ZERO    15 年前

    这就成功了。。。

        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