2010-09-07 35 views
0

我可以很容易地在C#中做到這一點......但我需要在VB.Net中的等價物。我需要能夠在VB.Net中實現各種IAsyncResult屬性。vb.net實現IAsyncResult.AsyncState

在C#

作品就像一個冠軍......

public object AsyncState { get; set; } 

在VB.NET - 失敗

失敗的原因,你不能超載VB中的一個屬性。網

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

這奏效了...

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